OAuth è stato progettato per i casi in cui l'Applicazione X deve accedere alle risorse (ad esempio "le mie foto" o "il mio indirizzo email" o "il mio calendario") controllate dall'applicazione Y e appartenenti all'Utente A - L'utente A potrebbe voler concedere accesso a tali risorse sull'applicazione Y, ma non vuole fornire a X l'effettivo nome utente / password. Quindi un token di accesso viene utilizzato come credenziale alternativa per una risorsa sull'applicazione Y. I token di accesso possono essere revocati indipendentemente dalle credenziali di nome utente / password e sono, idealmente, strettamente ristretti per consentire solo l'accesso a risorse specifiche.
Uso di OAuth 2 per sovraccarichi di autenticazione che si modellano in modi che possono essere rischiosi. Guarda l'esempio sopra, e immagina che venga usato per l'autenticazione. Se l'Applicazione X utilizza quel token di accesso per l'autenticazione, prende un token che concede l'accesso alle risorse sull'Applicazione Y e lo utilizza per concedere l'accesso alle proprie risorse. Forse si tratta di spaccare i capelli, perché la cosa importante è che sappiamo che l'atto di concedere un token di accesso tramite OAuth 2 implica che l'utente si è autenticato con successo. Il problema è che il token di accesso non dice nulla su quale applicazione l'utente finale ha autenticato per . Quindi cosa succede se l'Applicazione Z ha anche un token di accesso per le risorse dell'utente A sull'Applicazione Y? Se l'applicazione Z può ottenere l'applicazione X per utilizzare questo token di accesso, allora ha accesso alle risorse dell'utente sull'applicazione X . Questo è male. L'utente A può avere l'applicazione Z attendibile per accedere alle sue risorse sull'applicazione Y, ma l'utente A non ha certamente mai acconsentito all'applicazione Z per accedere alle sue risorse sull'applicazione X.
OpenID e OpenID Connect sono specificamente progettati per l'autenticazione. OpenID Connect è basato su OAuth 2 in modo che possa sfruttare le interazioni e i flussi esistenti, ma aggiunge un'entità chiamata token ID, che è un oggetto contenente un insieme di attestazioni su un evento di autenticazione. Tali affermazioni includono un identificatore per l'utente che ha eseguito l'autenticazione, un identificatore per il server che ha gestito l'autenticazione e un identificatore del pubblico dell'autenticazione. Ciò fornisce a un'applicazione le informazioni necessarie per convalidare che un utente è autenticato per suo conto.