Sto costruendo un'app Web di Google App Engine, con un back-end Java, che fa molto affidamento su JavaScript/JQuery nel browser (è possibile vederlo here).Qual è il modo più semplice e sicuro per autenticare gli utenti tramite AJAX?
Desidero implementare un meccanismo di autenticazione utente, che si baserà anche su AJAX (ad esempio, sarà in grado di registrarsi e accedere senza un aggiornamento della pagina).
Non voglio fare affidamento sull'autenticazione di Google perché ho scoperto che molte persone sono riluttanti a rinunciare ai loro indirizzi email GMail, ma mi piacerebbe supportare l'autenticazione via Google/Facebook/Twitter ecc. In futuro .
Mi piace la semplicità dell'approccio di Reddit all'autenticazione dell'utente.
La mia preoccupazione è che, dal momento che le persone non utilizzeranno la mia app su HTTPS, non voglio dover inviare una password in chiaro su HTTP. Preferirei anche fare affidamento su qualche tipo di token segreto (forse un hash della password e qualche "sale" fornito dal server), che potrebbe essere intercettato e falsificato.
Allo stesso tempo, non voglio dover fare un grande sforzo per implementare il meccanismo di autenticazione.
C'è un approccio che mi dà la semplicità che voglio, eppure è sicuro su HTTP?
modifica: Ho appena realizzato che Google App Engine supporta HTTPS ma solo se ci si connette tramite l'URL * .appspot.com per il proprio sito. Sfortunatamente non è possibile effettuare chiamate AJAX a causa di restrizioni di scripting cross-site, anche se immagino che possa essere possibile con JSONP.
Quindi, sta utilizzando JSONP + HTTPS + *. Appspot.com l'approccio migliore qui?
Grazie per la risposta, ma temo che l'esposizione del dominio appspot.com non sia un'opzione, è semplicemente troppo brutta. Non mi interessa molto se gli utenti vedono che il sito è sicuro. Ad esempio, Reddit invia informazioni di accesso tramite HTTPS ma l'utente non lo vede. Non penso ci sia alcuna prova che l'adozione di Reddit sia stata limitata dalla mancanza di un uso * visibile * di HTTPS. – sanity
Oh, non sono sicuro di poter essere d'accordo sul fatto che tu * devi * usare HTTPS per comunicazioni sicure via HTTP, dato che potresti sempre eseguire la crittografia manualmente in JavaScript e sul server. Naturalmente, sei ancora vulnerabile al MITM con il download iniziale del codice JavaScript, ma sono più preoccupato per Eve che per Mallory. – sanity
Se non si desidera che visualizzino l'https e non sia necessario salvare cookie protetti, jsonp + https per appspot.com dovrebbe funzionare correttamente. Forse potresti implementare la tua ssl con javascript, ma hai detto che vuoi evitare di reinventare la ruota. E ... perché preoccuparsi, se sarà comunque vulnerabile al MITM? Se a qualcuno importa abbastanza da origliare, a qualcuno interesserà abbastanza per creare un MITM. –