Sto provando a lavorare su come gestire l'autenticazione quando ho client iOS che accedono a un server Node.js e voglio usare servizi come Google, Facebook ecc. per fornire l'autenticazione di base per la mia applicazione. La mia idea attuale di un flusso tipico è questa:
-
L'utente tocca un pulsante Facebook / Google che attiva le finestre di dialogo OAuth (2) e autentica l'utente sul dispositivo. A questo punto il dispositivo ha gli utenti che accedono al token. Questo token viene salvato in modo che la prossima volta che l'utente utilizza l'app possa essere recuperato.
-
Il token di accesso viene trasmesso al mio server Node.js che lo memorizza e lo contrassegna come non verificato.
-
Il server verifica il token effettuando una chiamata a Facebook / google per l'indirizzo email dell'utente. Se funziona, il token viene contrassegnato come verificato e il server sa che ha un utente verificato. Se Facebook / google non riescono ad autenticare il token, il server dice al client iOS di autenticarsi nuovamente e presenta un nuovo token.
-
Il client iOS ora può accedere alle chiamate API sul mio server Node.js passando il token ogni volta. Finché il token corrisponde al token memorizzato e verificato, il server accetta la chiamata.
Ovviamente i token hanno limiti di tempo. Sospetto che sia possibile, ma altamente improbabile che qualcuno possa annusare un token di accesso e tentare di usarlo entro la sua durata, ma a parte questo spero che questo sia un metodo ragionevolmente sicuro per la verifica degli utenti sui client iOS senza dover eseguire il rollover propria sicurezza.
Qualsiasi opinione e consiglio benvenuto.