Autenticazione riguarda il riconoscimento affidabile di chi si trova all'altra estremità. Dal momento che, dal server, "vedi" il client solo attraverso i pacchetti di rete, e dato che tutti possono acquistare lo stesso tipo di hardware, potresti sperare di autenticare correttamente un client specifico solo se quel client è in grado di calcolare cose che altri sistemi avrebbero non. Ciò implica che il client deve conoscere alcuni "segreti". Non c'è da evitarlo. Se non è possibile memorizzare alcun segreto sul lato client, l'autenticazione dal server è senza speranza.
Ora, succede che nel caso di un telefono, il sistema client viene fornito con un'appendice solitamente definita "umana". Esiste una relazione one-to-one (liberamente mantenuta) tra un telefono e il suo proprietario. Ciò significa, nel tuo contesto, che il segreto lato client può essere memorizzato nel dispositivo stesso, ma anche nel cervello dell'utente umano. La chiamiamo, tecnicamente, una "password".
In alternativa, è un valore segreto memorizzato in modo affidabile memorizzato sul lato del telefono: è la chiave nella scheda SIM. Questo segreto specifico è quello che viene utilizzato dalle compagnie telefoniche per distinguere i telefoni l'uno dall'altro, e tutta la fatturazione è basata su di esso. potresti essere in grado di sfruttare tale autenticazione, ma solo integrando con le compagnie telefoniche; non lo fai con un semplice "server su Internet". Un'implementazione pratica sarebbe la seguente:
- L'app client si collega al tuo server (con un protocollo appropriato, tipicamente SSL / TLS).
- Il server invia un SMS all'utente, contenente un codice numerico casuale.
- L'utente legge l'SMS e digita il codice nell'app.
- L'app invia il codice al server.
- Il server vede che il codice inviato dall'app corrisponde a quello appena inviato tramite SMS ed è felice.