Autorizzazione OAuth vs autenticazione


90

La terminologia OAuth mi dà fastidio da molto tempo ormai. L'autorizzazione OAuth è come alcuni suggeriscono o è l'autenticazione?

Correggimi se sbaglio, ma ho sempre letto Autorizzazione come atto di consentire a qualcuno di accedere a una risorsa, ma OAuth non sembra avere alcuna implementazione che consente effettivamente l'accesso agli utenti a una determinata risorsa. Tutte le implementazioni OAuth parlano di fornire a un utente un token (firmato e talvolta crittografato). Questo token viene quindi passato con ogni chiamata a un endpoint del servizio back-end dove viene verificata la validità, ancora una volta non è un problema OAuth.

L'autenticazione OAuth (ogni articolo dice che non lo è) che ritengo richiede che un utente fornisca le credenziali che a loro volta dimostrano che un utente dovrebbe / non dovrebbe avere accesso?

Quindi sembra che OAuth non sia Autorizzazione NÉ Autenticazione poiché questi devono essere eseguiti da altri processi. Allora che diavolo è? È un processo per comunicare un token? È una parola lanuginosa che non ha davvero un significato specifico?

È difficile fare una domanda su questo argomento senza sembrare enigmatici e superstiziosi (fantasmi e goblin) quindi mi aspetto che rispondere a questa domanda non sia una cosa semplice. Entra a tuo rischio.


Ho trovato utili anche queste risposte: security.stackexchange.com/questions/44611/…
antak

OAuth 2.0 è un protocollo di sicurezza. Dettagli: stackoverflow.com/a/54304326/3623172
Rajat

Risposte:


153

OAuth è una specifica per l'autorizzazione

OAuth 2.0 è una specifica per l'autorizzazione, ma NON per l'autenticazione. RFC 6749, 3.1. L'endpoint di autorizzazione dice esplicitamente quanto segue:

L'endpoint di autorizzazione viene utilizzato per interagire con il proprietario della risorsa e ottenere una concessione di autorizzazione. Il server delle autorizzazioni DEVE prima verificare l'identità del proprietario della risorsa. Il modo in cui il server di autorizzazione autentica il proprietario della risorsa (ad esempio, nome utente e password di accesso, cookie di sessione) esula dallo scopo di questa specifica .


Autenticazione OAuth?

L'autenticazione fornisce informazioni su "chi è". L'autorizzazione fornisce informazioni su "chi concede quali autorizzazioni a chi". Il flusso di autorizzazione contiene l'autenticazione come primo passaggio. È il motivo per cui le persone sono spesso confuse.

Esistono molte librerie e servizi che utilizzano OAuth 2.0 per l'autenticazione. Viene spesso chiamato "social login" e rende le persone più confuse. Se vedi "Autenticazione OAuth" (non "Autorizzazione OAuth"), si tratta di una soluzione che utilizza OAuth per l'autenticazione.


OpenID Connect

OpenID 1.0 e OpenID 2.0 sono vecchie specifiche per l'autenticazione. Coloro che hanno realizzato le specifiche si aspettavano che le persone utilizzassero OpenID per l'autenticazione. Tuttavia, alcune persone hanno iniziato a utilizzare OAuth 2.0 per l'autenticazione (non per l'autorizzazione) e l'autenticazione OAuth ha prevalso rapidamente.

Dal punto di vista dei ragazzi di OpenID, l'autenticazione basata su OAuth non era abbastanza sicura, ma dovevano ammettere che le persone preferivano l'autenticazione OAuth. Di conseguenza, i ragazzi di OpenID hanno deciso di definire una nuova specifica, OpenID Connect , oltre a OAuth 2.0.

Sì, questo ha reso le persone molto più confuse.


Definizioni di una frase di OAuth 2.0 e OpenID Connect

OAuth 2.0 è un framework in cui un utente di un servizio può consentire a un'applicazione di terze parti di accedere ai propri dati ospitati nel servizio senza rivelare le proprie credenziali (ID e password) all'applicazione.

inserisci qui la descrizione dell'immagine

OpenID Connect è un framework in cima a OAuth 2.0 in cui un'applicazione di terze parti può ottenere informazioni sull'identità di un utente gestite da un servizio.

inserisci qui la descrizione dell'immagine

(Spiacenti, queste definizioni sono estratti dalla pagina della panoramica della mia azienda)


Definizioni dal punto di vista degli implementatori

L'autenticazione è un processo per determinare l'oggetto (= identificatore univoco) di un utente finale. Esistono molti modi per determinare l'argomento. ID e password, impronte digitali, riconoscimento dell'iride, ecc.

L'autorizzazione è un processo per associare il soggetto alle autorizzazioni richieste e all'applicazione client che ha richiesto le autorizzazioni. Un token di accesso rappresenta l'associazione.


Guarda anche

  1. Implementatore completo di OAuth e OpenID Connect Talks About Findings
  2. Diagrammi e filmati di tutti i flussi OAuth 2.0
  3. Diagrammi di tutti i flussi di OpenID Connect
  4. La guida più semplice a OAuth 2.0

13
Per coloro che si chiedono perché l' autenticazione basata su OAuth non fosse abbastanza sicura , presumo che queste insidie ​​comuni siano la ragione .
ingresso il

4
"Il flusso di autorizzazione contiene l'autenticazione come primo passaggio. È il motivo per cui le persone sono spesso confuse". Oro.
Sully,

1
L'unica differenza che posso vedere tra i due diagrammi è che il primo contiene i "dati dell'utente" e il secondo contiene l '"identità dell'utente", quindi sì, questo crea confusione.
Joel_Blum
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.