2012-02-12 5 views
7

Sto provando a creare le basi per la mia app e server iPhone. Ho utenti che si registreranno e accedono dall'app per iPhone. In un normale accesso al sito Web, il server http fornirà i cookie per consentire alle richieste successive dell'utente di rimanere autenticati. Come dovrei gestirlo su iPhone? Dovrei semplicemente mandare l'utente/password ogni volta che ho una NSURLConnection GET o POST? Sembra eccessivo. O uso la struttura ASIHTTPRequest per utilizzare i cookie. Qualcuno può indicarmi la giusta direzione per una corretta implementazione?Come gestire la persistenza dell'autenticazione utente in IOS?

Grazie!

risposta

8

L'invio di nome utente e password in ogni richiesta non è eccezionale.

È possibile utilizzare qualsiasi cosa che si desidera inviare i cookie. È solo un'altra intestazione HTTP. Ma questo fa sorgere la domanda su cosa c'è nel cookie. Dipende da cosa è l'architettura client/server. Le app Web utilizzano le chiavi di sessione perché tradizionalmente i client Web non hanno mantenuto alcuno stato, quindi il server dell'app doveva. I client nativi possono avere tutti i tipi di stato e quindi in genere non hanno bisogno del server per fornire questo.

Ma è necessaria l'autenticazione. Ecco cosa sono le cose come OAuth e OAuth 2. Consentono di autenticarsi una volta e quindi di utilizzare token che possono essere invalidati dal lato server. Un po 'come sessioni di lunga durata senza dati.

Sono un po 'complicate ma ci sono librerie open source sia per il server che per i pezzi client oppure è possibile eseguire il rollover. La maggior parte della complicazione riguarda l'ottenimento del token originale che è possibile cortocircuitare se si possiedono il client e il server. OAuth può diventare piuttosto complicato perché tutte le richieste sono firmate con un token segreto. OAuth 2 può essere semplice come un segreto condiviso (che richiede quindi SSL) in un cookie.

+0

Risposta molto dettagliata per un argomento molto interessante. Grazie. – Francesco

+1

OAuth è eccessivo se ho solo 2 gambe? Solo il mio iPhone e il mio server. Un singolo token di accesso (salvato su iPhone) funzionerà a sufficienza? – Ryan

+0

Finché si fanno tutte le richieste su SSL, sì. Questo è praticamente ciò che OAuth 2 degenera nel flusso più semplice. – smparkes

Problemi correlati