it-swarm-eu.dev

Quali sono le differenze tra i token Web JSON, SAML e OAuth 2?

Quali sono le differenze tra i token Web JSON, SAML e OAuth 2. Fornire alcuni suggerimenti e una panoramica di alto livello delle loro funzioni.

In particolare, perché utilizzare SAML su JSON Web Token o viceversa? È necessario avere OAuth 2 per utilizzare i token Web/SAML JSON? O è possibile utilizzare i token Web/SAML JSON in modo indipendente?

24
Jadiel de Armas

SAML e OAuth 2 sono protocolli utilizzati nell'autenticazione/autorizzazione. JSON Web Tokens (JWT) è una specifica per un token che può essere utilizzata in molte applicazioni o protocolli - accade che OpenID Connect ( Il protocollo OIDC) utilizza il JWT. SAML definisce anche il proprio token: Asserzione SAML; così come OAuth 2: token di accesso. I token utilizzati da questi protocolli indicano che sei stato autenticato/autorizzato e trasmetti informazioni su tu o la sessione.

+----------+----------------+-------------------------------+
| Protocol | Token          | Technologies | Design Pattern |
+==========+================+==============+================+
| SAML     | SAML Assertion | SOAP, XML    | Facade         |
+----------+----------------+--------------+----------------+
| OAuth 2  | Access Token   |              | Proxy          |
+----------+----------------+--------------+----------------+
| OIDC     | Access Token,  | REST, JSON   | Decorator      |
|          | ID Token (JWT) |              |                |
+----------+----------------+--------------+----------------+

I modelli di progettazione del software associati a ciascuno dei protocolli nella tabella sopra riassumono in una parola ciò che questi protocolli dovevano realizzare.

[~ ~ #] SAML [~ ~ #]. Il modello Facciata fornisce un'interfaccia unificata a una serie di interfacce in un sottosistema. SAML è il sistema di identità federato originale, inventato dalle università per consentire agli studenti di accedere ad altre biblioteche universitarie, ma ciascuna università mantiene il proprio sistema di identità degli studenti. Standard di fatto nella maggior parte degli ambienti aziendali. Costruito attorno a XML e SOAP.

OAuth 2. Il proxy, proprio come suggerisce il nome, consente ai clienti di accedere alle tue informazioni come se fossero un proxy per te.

[~ ~ #] oidc [~ ~ #]. Estende OAuth 2 aggiungendo l'ID utente e le informazioni utente al protocollo. Spesso considerata una versione moderna di SAML. Uso diffuso nello spazio dei consumatori - quasi tutti i siti di social media supportano OIDC. Costruito attorno a JSON e RESTO.

Spero che questo districa un po 'le tue domande. Non è possibile confrontare SAML (protocollo) con JWT (token), ma è possibile confrontare SAML con OIDC. È possibile tuttavia confrontare un'asserzione SAML con una JWT OIDC. La specifica OAuth 2 non specifica la struttura sottostante dei suoi token. Potrebbe anche risultare interessante che OIDC possa utilizzare l'asserzione SAML e il proprio JWT.

Il consenso è che OIDC finirà per soppiantare SAML, ma SAML esiste dal 2005 ed è molto maturo - una caratteristica importante negli ambienti aziendali. Anche se OIDC è relativamente nuovo (2014), le soluzioni di autenticazione in questi giorni (2018) dovrebbero supportarlo. SAML è stato progettato in un'era in cui i browser Web erano dominanti e ha un po 'di tempo imbarazzante con le applicazioni Web mobili o moderne. OIDC d'altra parte supporta tecnologie moderne come REST e JSON che lo rendono molto più accessibile dalle applicazioni in questi giorni.

Tuttavia, OAuth 2, OIDC e SAML non specificano effettivamente come vengono eseguite l'autenticazione e l'autorizzazione nel modo in cui questi due termini sono tradizionalmente definiti.

Quando senti l'autenticazione pensi a un login/password, o impronta digitale o passcode inviato al tuo telefono - nessuno di questi protocolli copre queste specifiche, piuttosto l'autenticazione è delegata al provider di identità (IdP). Questi protocolli specificano come dovresti essere reindirizzato a un IdP per ottenere l'autenticazione e, in caso di successo, come vengono restituiti i token/asserzioni.

L '"autorizzazione" OAuth 2 si occupa di ottenere il consenso dell'utente , ovvero se consentire a un servizio di accedere alle tue informazioni/ai tuoi dati - ciò non significa autorizzazione nella controllo di accesso senso. OIDC è molto simile a OAuth 2 supporta anche un mezzo per ottenere il consenso dell'utente. Sebbene SAML supporti anche il consenso dell'utente, non viene generalmente utilizzato in un ambiente aziendale/intranet.

Anche l'autorizzazione (riferendosi al significato più tradizionale del controllo di accesso) non è in OAuth 2, OIDC e specifiche SAML, ma consentono ai token di contenere attestazioni come se un utente appartiene a un gruppo di amministratori , che i servizi client possono interpretare come preferisce.

OAuth 2, OIDC e SAML sono ottimi facilitatori per diversi schemi di autenticazione e autorizzazione (controllo accessi), ma in realtà non specificano i meccanismi sottostanti effettivi.

AGGIORNAMENTO DEL 9/5/2018. Aggiornato per il 2018.

AGGIORNAMENTO 26/04/2017. Risolto il problema con l'affermazione errata di SAML che non supportava il consenso dell'utente, ma non viene ampiamente utilizzato.

AGGIORNAMENTO 22/02/2017. Chiarire l'autenticazione, l'autorizzazione (controllo degli accessi) e il consenso dell'utente in risposta al commento dell'utente di seguito.

25
HTLee