Endpoint OAuth2 implicito vs. cookie

1

Al momento ho un'app che fondamentalmente esegue due metà di un'API: un'API riposante per l'app Web e un'API di sincronizzazione per i client nativi (su tutto SSL).

L'app web è completamente basata su javascript ed è abbastanza simile ai client nativi in ogni caso, tranne che attualmente non funziona offline.

Quello che spero di fare è unire le API frammentate in un'unica API riposante. L'app Web attualmente autentica emettendo un cookie sul client mentre i client nativi funzionano utilizzando un'implementazione di token di accesso HMAC personalizzata. Ovviamente uno scenario chiave pubblico / privato per un'applicazione javascript è un po 'inutile.

Penso che la soluzione migliore sarebbe quella di creare un endpoint OAuth2 sull'API (come Instagram, ad esempio link ) che è utilizzato sia dalle app native sia dall'app Web.

La mia domanda è, in termini di sicurezza, in che modo un flusso OAuth2 implicito confronta (memorizzando il token di accesso nella memoria locale) per "proteggere" i cookie? Presumibilmente, sebbene SSL risolva l'attacco uomo nel mezzo, l'utente potrebbe teoricamente afferrare il token di accesso dalla memoria locale e copiarlo su un'altra macchina?

    
posta Jamie 24.04.2014 - 11:44
fonte

1 risposta

1

Il vantaggio di OAuth rispetto a un cookie è che ti consente di fornire l'accesso a un servizio di terze parti (come Facebook fa con le loro app) senza divulgare le credenziali dell'utente finale e consente all'utente di revocare in seguito tale accesso senza bisogno cambiare le proprie credenziali. Se non sono coinvolte terze parti, non c'è alcuna differenza essenziale nella sicurezza.

Se fornisci all'utente una sorta di token di accesso, che si tratti di OAuth o di un cookie, devi presumere che chiunque fornisca quel token sia autorizzato. Non c'è modo di impedire a un utente di copiare uno su un altro computer e gli indirizzi IP cambiano continuamente sullo stesso computer.

Quello che puoi fare è limitare il danno che un attaccante può fare se capita di intercettare uno di quei segnalini. Ciò significa richiedere che vengano periodicamente rinnovati e tracciare quali token sono attualmente validi in modo tale da poter capire quando un token è stato copiato maliziosamente, come in Migliorato Best Practice di accesso persistente .

    
risposta data 24.04.2014 - 14:53
fonte

Leggi altre domande sui tag