2012-11-18 7 views
8

Sto costruendo un'app Web offline per iPhone e altri dispositivi mobili. C'è un modo in cui possiamo mantenere l'autenticazione dell'utente salvata utilizzando l'archiviazione locale WebSql?Come rendere l'accesso utente per un'app Web offline?

Così, quando si apre l'applicazione web mentre è in linea, voglio utente In entrambi da registrare nel già o l'utente dovrebbe essere in grado di accedere.

+2

Interessante domanda, significa che dovrai memorizzare le credenziali dell'utente localmente, il che non è molto sicuro. Mi chiedo se esiste un modo sicuro o le migliori pratiche per raggiungere questo obiettivo. –

+1

Solo qualcosa a cui pensare - se il controllo delle credenziali è, per definizione, fatto sul client in javascript, sarebbe banale per qualcuno di emulare/ignorare l'autenticazione smanettando le proprietà js nell'applicazione. Quindi supponiamo, ad esempio, che i dati sul lato client siano stati sincronizzati con il server quando sei di nuovo online, potrebbero causare problemi. – user888734

risposta

1

Se ho capito bene la questione, questo è quanto si potrebbe farlo:

Quando si accede (online):

  • l'autenticazione del server, se è corretto, memorizzare il nome utente e una password hash (ad esempio utilizzando Crypto JS) nel database WebSQL.
  • Se l'account esiste già nel database locale, generare comunque un nuovo hash nel caso in cui l'utente abbia cambiato la sua password dall'ultimo accesso.

Quando si accede (offline):

  • l'autenticazione del database locale.

Questo, ovviamente, richiede agli utenti di accedere utilizzando la versione online almeno una volta prima di accedere localmente. Questo è il modo in cui Windows 8 lo fa quando qualcuno tenta di accedere al proprio account Microsoft mentre è disconnesso.

1

Non so come memorizzare o utilizzare i dati dello stato del cliente (keychain in iOS anche in Android), ma per la prospettiva dell'app Web, non è necessario fare nulla. Non devi fare nulla perché se puoi non è sicuro. Dopo l'accesso, il server imposterà HTTP only cookie che vive per alcuni giorni o settimane. Durante questo periodo, la richiesta with credentials al server viene sempre autenticata dal browser. Puoi richiedere l'email di accesso o qualsiasi altra cosa dal server. Per ulteriori scopi di sicurezza il server può richiedere XSRF token. In tal caso, salvarlo in localStorage. Perdere questo token significa non molto.

Questo è il modo più sicuro ed è utilizzato anche dai client mobili, compreso l'internet banking tramite WebView. L'utilizzo del browser per l'autenticazione è più semplice e sicuro perché ci sono molti punti deboli come l'archiviazione delle credenziali, il controllo dei certificati ssl corretti, la crittografia, ecc. Con la webview, tutto è gestito dal browser.

Se sei interessato a conoscere questi codici server, ho avuto una spiegazione con Appengine cross domain authentication server code.

Problemi correlati