Token Web JSON vs SAML

18

Non ne so molto della sicurezza. Nello specifico, non capisco la differenza tra i Token Web JSON, SAML e OAuth 2. Se potessi fornire alcuni puntatori e una panoramica di alto livello delle loro funzioni, mi aiuterebbe in seguito nella ricerca dei dettagli.

In particolare, perché dovrei usare SAML su Token Web JSON o viceversa? Devo avere OAuth 2 per utilizzare i token Web / SAML JSON? Oppure è possibile utilizzare i token Web / SAML JSON in modo indipendente?

    
posta Jadiel de Armas 26.02.2015 - 15:39
fonte

1 risposta

19

SAML e OAuth 2 sono protocolli utilizzati in autenticazione / autorizzazione. JSON Web Tokens (JWT) è una specifica per un token che può essere utilizzato in molte applicazioni o protocolli - accade che il protocollo OpenID Connect (OIDC) utilizzi il JWT. SAML definisce anche il proprio token: SAML Assertion; come fa OAuth 2: token di accesso. I token utilizzati da questi protocolli indicano che sei stato autenticato / autorizzato e fornisci informazioni su di te o sulla 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 software associati a ciascuno dei protocolli nella tabella sopra riassumono in una parola ciò che questi protocolli erano destinati a realizzare.

SAML . Il pattern Facade fornisce un'interfaccia unificata a un set 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 ogni 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 client 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 considerato come 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 REST.

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

Il consenso è che OIDC alla fine sostituirà SAML, ma SAML esiste dal 2005 ed è molto maturo - un tratto 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 in realtà come vengono eseguiti l'autenticazione e l'autorizzazione nel modo in cui questi due termini sono tradizionalmente definiti.

Quando senti l'autenticazione, pensi a un login / password, un'impronta digitale o un passcode inviati al tuo telefono: nessuno di questi protocolli copre queste specifiche, piuttosto l'autenticazione è delegata al provider di identità (IdP). Questi protocolli specificano come devi essere reindirizzato a un IdP per ottenere l'autenticazione, e se ha esito positivo come vengono restituiti i token / asserzioni.

L'autorizzazione OAuth 2 "si occupa di ottenere consenso dell'utente , ovvero se fornire un accesso ai servizi alle tue informazioni / dati - non significa autorizzazione nel controllo degli accessi 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, generalmente non viene utilizzato all'interno di un ambiente aziendale / intranet.

Anche l'autorizzazione (riferita al significato di controllo di accesso più tradizionale) non è nelle specifiche OAuth 2, OIDC e SAML, ma consente ai token di contenere affermazioni come se un utente appartiene a un gruppo di amministratori, quali servizi client possono interpretare comunque gli piace.

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

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

AGGIORNAMENTO 24/04/2017. Corretta l'errata affermazione su SAML che non supportava il consenso dell'utente - lo fa, ma non è ampiamente utilizzato.

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

    
risposta data 29.06.2016 - 03:30
fonte

Leggi altre domande sui tag