Perché utilizzare OpenID Connect invece di OAuth2 semplice?

99

Ho appena iniziato a utilizzare OAuth 2.0 come modo per autenticare i miei utenti. Funziona alla perfezione: utilizzo solo l'API identità / profilo di ciascun provider per ottenere un indirizzo email convalidato dell'utente.

Ora ho letto di OpenID Connect e sono un po 'confuso.

Qual è la differenza tra OpenID Connect e l'utilizzo dell'API identity su OAuth2? È solo che ho un'API di profilo standard, quindi non devo preoccuparmi di ottenere un "email" o un "emails" JSON?

O c'è dell'altro, che rende l'approccio OpenID Connect più sicuro del mio primo approccio?

    
posta rdmueller 21.06.2013 - 08:18
fonte

6 risposte

70

OpenID connect ti fornirà un token di accesso più un token ID . Il token ID è un JWT e contiene informazioni sull'utente autenticato. È firmato dal provider di identità e può essere letto e verificato senza accedere al provider di identità.

Inoltre, OpenID connect standardizza un paio di cose che oauth2 lascia alla scelta. per esempio gli ambiti, l'individuazione degli endpoint e la registrazione dinamica dei client.

Ciò semplifica la scrittura di codice che consente all'utente di scegliere tra più provider di identità.

    
risposta data 17.12.2013 - 04:33
fonte
25

OAuth fornisce solo e dovrebbe fornire solo l'autorizzazione utilizzando un token di accesso. OpenID connect è basato su OAuth 2 per fornire le informazioni di autenticazione dell'utente. Tuttavia, non fornirà un'implementazione più solida di OAuth (poiché utilizza OAuth e aggiunge alcune interazioni aggiuntive con un provider OpenID).

OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 [RFC6749] protocol. It enables Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner. OpenID Connect Core 1.0 - draft 17

OpenID connect offre un modo "standard" per ottenere l'identità dell'utente. Se utilizzi OAuth e l'API, dovresti adattare la richiesta per ogni risorsa, che potrebbe non fornire sempre le stesse informazioni o potrebbe cambiare nel tempo. E concettualmente, si utilizza OAuth per poter utilizzare un'API, non per autenticare un utente.

As background, the OAuth 2.0 Authorization Framework [RFC6749] and OAuth 2.0 Bearer Token Usage [RFC6750] specifications provide a general framework for third-party applications to obtain and use limited access to HTTP resources. They define mechanisms to obtain and use Access Tokens to access resources but do not define standard methods to provide identity information. Notably, without profiling OAuth 2.0, it is incapable of providing information about the authentication of an End-User. OpenID Connect Core 1.0 - draft 17

Nota che OpenID connect fornisce un id_token con alcune informazioni sull'utente. Tuttavia, se si desidera l'intero set di informazioni, è comunque necessario il access_token per richiedere al provider OpenID di ottenere l'utenteinfo (che mi ha confuso la prima volta che l'ho visto). Ciò dimostra che la richiesta di informazioni utente da un'API o dal provider OpenID utilizza quasi lo stesso metodo. Vedere 5.3.1. userinfo request nella bozza.

    
risposta data 21.01.2014 - 15:07
fonte
12

OAuth è un protocollo di autorizzazione che fornisce un modo per autorizzare l'accesso a una risorsa protetta. Un sottoprodotto del processo di autorizzazione è che l'utente è autenticato.

Tecnicamente, OAuth non deve fornire alcuna informazione sull'utente. Ciò che fornisce è una convalida che l'utente ha dato l'autorizzazione all'applicazione per accedere ad alcuni dati. Questo è regolato dall'ambito della concessione dell'autorizzazione.

OpenID Connect fornisce un modo per l'applicazione di recuperare informazioni sull'utente autenticato. Soprattutto fornisce un livello di garanzia che l'informazione è valida (per quanto riguarda comunque il server di autorizzazione). Questo può quindi essere usato per facilitare la federazione delle identità.

In passato, la federazione è stata ottenuta con OAuth concedendo un ambito che consentiva l'accesso alle informazioni sull'identità dell'utente. OpenID Connect standardizza questo ambito.

    
risposta data 26.02.2015 - 05:12
fonte
7

OpenID Connect è un profilo di OAuth2 ... che definisce un'architettura che consente a una persona di autorizzare un provider di identità a rilasciare determinate rivendicazioni utente a un client (sito Web / applicazione mobile).

OAuth2 offre il sussidio per le credenziali delle password del proprietario delle risorse, che è giustamente infastidito dagli esperti IAM come "Il diavolo".

Un modello comune per OpenID Connect API è di tre passi:
1) Ottieni un codice
2) Ottieni token come access_token , refresh_token e id_token
3) Ottieni informazioni utente che contengono reclami come nome utente, email, ecc Lo schema per id_token, che è un JWT, è definito nell'ambito OpenID Connect, come molti altri dettagli.

Un altro motivo per usare OpenID Connect è che esiste una soluzione sicura per l'autenticazione centralizzata per il software mobile (almeno IOS e Android). L'attuale best practice definita da Google consiste nell'utilizzare nuove funzionalità di sicurezza che impediscono a un'applicazione mobile di visualizzare cookie o credenziali in una visualizzazione Web. Google ha pubblicato le librerie AppAuth IOS e Android perché in realtà non vogliono che tu perda le credenziali di Google! Al momento della stesura di questo documento, esistono diversi provider OpenID (noti anche come IDP ...) che supportano il software Google OpenID Connect AppAuth, tra cui: Google, OKTA, Ping e il mio prodotto Gluu.

Vedi anche:

  • OAuth 2.0 per le app native draft-wdenniss-oauth-native-apps-02
  • AppAuth per IOS
  • AppAuth per Android
risposta data 23.06.2016 - 21:02
fonte
3

L'uso di OAuth come metodo di autenticazione non è raccomandato, è esplicitamente progettato come metodo di autorizzazione delegato.

Facebook utilizzava OAuth come metodo di autenticazione, ma una persona intraprendente ha scoperto come rubare access_token da Facebook - blog completo

OpenID Connect rende molto più difficile rubare i token di accesso attraverso tale meccanismo.

    
risposta data 24.12.2015 - 12:32
fonte
1

Open id connect è costruito nella parte superiore di OAuth e quindi è più robusto. OAuth è il protocollo utilizzato solo per l'autorizzazione e open id connect è molto simile a OAuth ma combina anche la funzionalità di OAuth. Puoi iniziare la comunicazione tra i tuoi RP e IP usando questo protocollo e i loro vari buchi nel protocollo OAuth è il motivo per cui è meglio usare Open Id Connect.

    
risposta data 11.10.2013 - 15:52
fonte

Leggi altre domande sui tag