it-swarm.dev

OAuth token di accesso vs chiave di sessione

C'è qualche vantaggio su OAuth rispetto alle sessioni basate su cookie (stabilite tramite nome utente/password) con i seguenti presupposti?

  1. Esiste un solo client legittimo per il servizio
  2. Il OAuth il segreto del client è stato compromesso (quindi le richieste valide possono essere emesse da chiunque)
  3. Il token OAuth e la sessione hanno la stessa durata
  4. Entrambi consentono l'accesso allo stesso insieme di risorse con gli stessi privilegi
  5. Tutte le comunicazioni client-server in entrambi gli schemi avvengono tramite lo stesso protocollo (per amor di argomenti, HTTPS)
  6. Il client e il server sono controllati dalla stessa parte
16
Michael Mior

Beh, dipende...

OAuth è un protocollo per la creazione di una sessione. OAuth vengono trasmessi dal client utilizzando il Authentication: Bearer Intestazione HTTP. Questo è solo un nonce crittografico che viene trasmesso tramite un elemento di intestazione http, che in effetti è ( quasi) identico all'elemento di intestazione cookie http.

In che cosa differisce? Bene, le regole per i cookie sono leggermente diverse rispetto ad altri elementi di intestazione. Il cookie è gestito dal browser ed è allegato a tutte le richieste a cui appartiene il cookie. Questo è il motivo per cui Cross-Site Request Forgery o gli attacchi in sella funzionano. Al browser non importa da dove provenga la richiesta, allega il cookie in base alla destinazione della richiesta.

I token OAuth Bearer sono leggermente diversi. Questi token sono generalmente gestiti dal client (JavaScript, Flash o anche qualche applicazione middleware). Se l'applicazione utilizza JavaScript per gestire il token di autenticazione, questo valore non verrà applicato automaticamente dal browser e pertanto può raddoppiare come token CSRF , che è pulito.

Tuttavia, se si utilizza OAuth per il middleware, CSRF non entra in gioco, quindi non importa dove appare nell'intestazione.

13
rook

CSRF è già protetto da tutti i browser moderni, se non si limita a collegare i cookie in base alla destinazione, se i validati consentono la politica di Origin prima di inviarlo al server, quindi dopo aver fatto qualche ricerca, oauth2 e l'autenticazione basata su sessione hanno entrambi la stessa sicurezza rischio e unica differenza è l'intestazione che viene utilizzata

3
user2795270