È possibile utilizzare i webtoken JSON per semplificare il protocollo OAuth2 senza compromettere la sicurezza?

0

Ho usato json webtokens per gestire l'autenticazione per alcuni siti web di hobby in passato. Per il mio prossimo sito vorrei utilizzare OAuth2, per consentire l'utilizzo del mio sito con altri servizi.

Sembra che il protocollo authorization_code OAuth2 aggiunga alcuni passaggi aggiuntivi (stato e codice di autorizzazione) per evitare un tipo di attacco di riproduzione in cui un client viene ingannato nell'utilizzo di un token di accesso rilasciato a un altro client.

È l'unico scopo di emettere un codice di autorizzazione prima dello scambio di token? Se aggiungo informazioni come client_id e tempo di scadenza in un JWT firmato e restituisco questo come "codice_autorizzazione", saltando la fase di scambio dei token, avrò perso qualche sicurezza? Suppongo che tutte le comunicazioni avvengano su https.

    
posta user3125280 24.02.2017 - 09:46
fonte

1 risposta

1

Il punto del codice è impedire la raccolta del token di accesso da parte di un man-in-the-middle tra l'utente e il server di autorizzazione.

Una volta che il client ha il codice, deve utilizzare quel codice oltre al proprio ID client e segreto e inviarlo al server di autorizzazione per un token di accesso. Questo ha il vantaggio che sia tu che il cliente siete autenticati / autorizzati contro il server di autorizzazione, il che significa che la risorsa protetta ha una certa garanzia che ogni parte è chi dice di essere. Una volta che il client ha il token, è necessario archiviare il token internamente e non rilasciarlo mai.

L'interazione tra te e il client è autenticata da un suo meccanismo (ad esempio un cookie di sessione) e il client utilizza quindi il token di accesso che ha internamente per raggiungere la risorsa protetta.

La chiave qui è che il client è sufficientemente protetto da qualcuno che cattura il token perché è (per esempio) su un server web remoto invece di eseguire solo localmente sul tuo computer.

Al contrario, se il client rivela alla fine il token all'utente, sia utilizzandolo per la propria gestione delle sessioni, sia eseguendo localmente sul proprio computer, il codice non fornisce alcun valore perché puoi facilmente estrarre l'ID, il segreto, il codice o il token del client.

L'aggiunta dell'ID client al token non impedisce necessariamente il furto del token. Significa solo che il token è stato progettato per essere utilizzato attraverso un determinato client.

    
risposta data 24.02.2017 - 15:05
fonte

Leggi altre domande sui tag