Mi rendo conto che ci sono un sacco di domande su questo argomento, e ho fatto ricerche per un paio di giorni. Voglio assicurarmi che la mia domanda sia il più specifica possibile dal momento che non ho ancora compreso pienamente l'approccio migliore.Configurazione consigliata per entrambi i client Web e RIP mobile mobile sicurezza
Attualmente ho un sito django sviluppato, con il client Web che comunica probabilmente circa il 95% tramite un django-pistone JSON REST api. L'altro 5% è una funzionalità di accesso rimanente che passa attraverso i moduli POST con protezione CSRF. Idealmente, mi piacerebbe spostare il resto anche nell'API REST.
Sono ora al punto in cui ho bisogno di trovare la soluzione migliore per proteggere sia il client Web sia il client mobile (l'app deve ancora essere sviluppata) in un modo riutilizzabile e felicemente coesistente. Ho letto molti post in definitiva raccomandando OAuth2 (e https) per il lato mobile, ma sono ancora confuso su come impostare la sicurezza del client web. Sto anche cercando di comprendere l'aspetto di OAuth2 e se posso usare la forma a 2 zampe. Così com'è, il client web è autenticato da Django. Tecnicamente la funzionalità di jsonp è ancora attiva nel pistone, quindi penso che chiunque potrebbe utilizzare l'API di un'app di terze parti purché la loro sessione Web disponga dei cookie di autenticazione?
Sintesi di utilizzo del mio api:
- L'API è un'interfaccia completamente privato per l'applicazione server di
- Sarebbe l'ideale se l'API non poteva essere ampiamente riutilizzati entro il 3 web parti client mashups.
- I dati non sono sensibili. Il suo solo un sito di social-tipo con le informazioni più personali è la roba di profilo utente di base come e-mail, indirizzi, ecc
Riassunto delle mie domande:
- OAuth2 è il miglior approccio raccomandato per garantire l'accesso alle app mobili? Ha qualcosa a che fare con l'aspetto del client web? E se OAuth2 è raccomandato, dovrebbe essere una chiave a livello di applicazione che viene versionata con le versioni dell'app?
- Il client Web che utilizza CSRF viene passato su ajax e basta disabilitare jsonp per garantire sempre la stessa origine? In sostanza, sto trattando separatamente la sicurezza del client Web?
- Come dovrei organizzare l'url/istanza/sottodominio dell'app o qualsiasi altra cosa consigliata per mantenere la sicurezza web vs mobile? Ho solo bisogno di prefissi URL separati, uno per cellulari che utilizza regole diverse?
Sto cercando raccomandazioni specifiche per pistoni django per risolvere questi problemi. Ho già diramato il mio progetto e ho iniziato a giocare con questa versione biforcuta del pistone: https://bitbucket.org/jespern/django-piston-oauth2
Un'idea che avevo era di creare una risorsa pistone che prima controlla se è la sua stessa origine e quindi applica solo l'auth del django, altrimenti applica oauth2, ma non sono sicuro che sia appropriato.
Aggiornamento 1/1/2012
Da informazioni che Spike fornito, ho iniziato a lavorare con pistone-OAuth2.Ho finito per creare un fork di che aggiungere alcune correzioni per nonrel Django (MongoDB) e ho biforcato someones esempio di utilizzare anche OAuth2 e pistoni:
https://bitbucket.org/justinfx/django-piston-oauth2-nonrel-example
Ora il suo solo una questione di me davvero aggancio questo in su al mio progetto e farlo funzionare. Ma questi test funzionano tutti alla grande.
Ora _this_ è una domanda ben scritto! È bello vedere alcune persone provare. – Polynomial
Grazie! Cerco davvero di non fare una domanda su SO se so che non è ben dettagliato e che è stato chiesto allo stesso modo prima. Vedo che troppe persone qui stanno semplicemente casualmente lasciando cadere 2 frasi e chiedendo a tutti di risolvere i problemi lì :-) – jdi