Sto creando un'applicazione mobile che deve interagire su una base per utente con un'API. Avendo lavorato su diversi progetti come client di API di terze parti, il mio primo pensiero era di andare con OAuth. Tuttavia, ci ho pensato e non ho intenzione di aprire l'API pubblicamente ad altri consumatori - l'unico consumatore sarà sempre la mia app mobile, quindi pensavo se OAuth fosse effettivamente la soluzione migliore? O è eccessivo?
Poi ho letto questo articolo fornendo consulenza su un processo di Google, che suggerisce il seguente approccio per esattamente questo scenario :
- Incorpora una visualizzazione Web nella tua app con un normale modulo di accesso basato sul Web
- in caso di accesso riuscito, passa cookie sicuro all'app mobile che dispone di token protetto
- utilizza il token nelle future richieste API
(assumendo tutto su https ecc.)
Questo sembra molto più semplice di qualsiasi implementazione OAuth, e potrebbe essere fatto facilmente utilizzando la catena di filtri / autenticazione Spring Security (il mio codice lato server è Java e Spring MVC / Secutiry ecc.). Sembra interessante l'approccio consigliato di Google, che a mio avviso ha aggiunto una certa credibilità alla soluzione.
Supponendo che con la soluzione di cui sopra includessi anche una chiave per app mobile ecc. (solo per impedire a qualsiasi cellulare di colpire il modulo / API), sembra che avrebbe lo stesso problema di OAuth in quanto devo includere la mia app chiave incorporata nel codice mobile (che potrebbe essere decompilata ecc.)
Ho letto anche questo articolo sull'approccio Amazon ( apparentemente simile a un'implementazione OAuth 1), che sembra possa essere un'estensione ragionevole della soluzione proposta da Google sopra e piuttosto che inviare il token al server, usarlo come chiave per cancellare i dati della richiesta.
Sono abbastanza nuovo nell'implementare qualsiasi cosa in sicurezza al di là della normale sicurezza utente / password basata sul web - apprezzeremmo su quando utilizzare OAuth per le app mobili e se le due soluzioni precedenti (amazon e amp; google) sono adatte allo scopo di se sono stati sostituiti da OAuth 2.