2015-02-23 13 views
11

Ho una domanda sull'autenticazione utilizzando Gestione account Android. Abbiamo un back-end e un'app per Android e l'utente dovrebbe accedere al nostro back-end usando il suo account Facebook. Al momento mostriamo una webview per questo scopo che fa normale oAuth 2 ma l'utilizzo dell'Account Manager di Android è più sicuro e molto più semplice per l'utente, quindi vogliamo passare. La mia domanda è, come può il server convalidare se l'utente è davvero chi finge di essere. Dal momento che non ci fidiamo della App, dobbiamo parlare con fb dal lato server per verificare se l'utente è veramente chi finge di essere. Sulla base di un bel similar idea ho fatto la seguente diagramma di chiederti se questo è il modo corretto di farlo o se ho perso qualcosa:Autentica utente connesso con FB sul mio server utilizzando Gestione account Android

Steps before the user is authenticated at "My Server" Il flusso sarebbe simile a questa:

  1. utente vuole il login con il suo account facebook
  2. di seguito riportiamo l'account manager di Android, dove raccoglie l'account facebook
  3. le borse di studio di accesso utente che "la mia app" è consentito di accedere ai propri dati fb
  4. l'Acc Android ount Responsabile ottiene un token di autenticazione dal server di Facebook
  5. Il "My App" ora ha il token di autenticazione e in grado di accedere ai dati fb dell'utente
  6. Il "My App" passa la tokten a "Il mio server"
  7. Il "mio server" ora controlla se il token è valido ottenendo i dati dell'utente dal server fb
  8. Se il token era valido, "My Server" restituisce un normale cookie temporaneo valido per la sessione corrente con "La mia app". L'utente ora ha effettuato l'accesso su My Server con il suo account fb.

Quindi questo è il modo corretto? Il passaggio 6 è una buona idea per passare il token una volta a "il mio server" o c'è un modo migliore? Btw Facebook è solo un esempio qui, utilizziamo diversi provider di autenticazione come FB, Google e Twitter ma il flusso dovrebbe essere lo stesso per ognuno.

+0

Il "mio server" ora controlla se il token è valido ottenendo i dati dell'utente dal server fb. Come può essere corretto? –

+0

@ H.A.H. se il server facebook restituisce l'utente valido e non rifiuta il token deve essere valido –

risposta

9

Non so se il modo corretto o meno. Ma mi piacerebbe condividere come abbiamo affrontato questo problema nel nostro caso che era praticamente la stessa della tua soluzione. Stavamo utilizzando Google e Facebook provider di autenticazione.

La nostra app Android invia token al server e quindi il server convalida il token a seconda del provider se è convalidato, quindi l'utente è a posto, se non è mostrato il messaggio appropriato. Inoltre, abbiamo verificato la convalida del token ogni volta che l'utente apre l'app sul server se il token è ancora valido. L'utente può utilizzare l'app se non è sufficiente richiamare l'utente per accedere allo schermo in modo che l'utente possa validarsi nuovamente perché il token ottiene scaduto dopo un po 'di tempo.

Problemi correlati