SAML vs. OAuth: Quale dovrei usare?

Come parte del progetto PicketLink (http://www.picketlink.org ), mi vengono poste domande su vari aspetti della sicurezza, della fiducia e della gestione delle identità.

Una delle domande principali che mi vengono poste è – “Qual è la differenza tra SAML e OAuth? Spero di poter usare questo articolo per fornire i miei pensieri su questo importante argomento. Cercherò anche di evidenziare vari casi d’uso in cui ciascuno è preferibile.

Qual è la grande differenza tra SAML e OAuth?

Informalmente nelle mie parole:

SAML (Security Assertion Markup Language) è uno standard ombrello che comprende profili, binding e costrutti per realizzare Single Sign On (SSO), Federation e Identity Management.

OAuth (Open Authorization) è uno standard di autorizzazione delle risorse. Non si occupa dell’autenticazione.

Per le definizioni formali,

Secondo la pagina di wikipedia su SAML:

Security Assertion Markup Language è un formato dati standard aperto basato su XML per lo scambio di dati di autenticazione e autorizzazione tra parti, in particolare, tra un fornitore di identità e un fornitore di servizi.

secondo OAuth.net

Un protocollo aperto per permettere l’autorizzazione sicura in un metodo semplice e standard da applicazioni web, mobili e desktop.

Quali sono le altre differenze?

1. Token o formato del messaggio<

SAML tratta XML come costrutto di dati o formato token.

I token di OAuth possono essere binari, JSON o SAML come spiegato in OAuth Bearer Tokens.

2. Trasporto

SAML ha dei binding che usano HTTP come HTTP POST Binding, HTTP REDIRECT Binding ecc.

Ma non ci sono restrizioni sul formato del trasporto. Puoi usare SOAP o JMS o qualsiasi trasporto tu voglia usare per inviare token o messaggi SAML.

OAuth usa esclusivamente HTTP.

3. Scope

Anche se SAML è stato progettato per essere applicabile apertamente, è tipicamente usato in scenari SSO aziendali –

  • all’interno di un’impresa o
  • da impresa a partner o
  • da impresa a scenari cloud.

OAuth è stato progettato per essere usato con applicazioni su internet, principalmente per l’autorizzazione delegata di risorse internet. OAuth è progettato per Internet Scale.

Quali versioni degli standard dovrei usare?

SAML v2.0 e OAuth v2.0 sono le ultime versioni degli standard.

Quando dovrei usare quali?

  • Se il vostro caso d’uso comporta un SSO (quando almeno un attore o partecipante è un’impresa), allora usate SAML.
  • Se il vostro caso d’uso comporta l’accesso (temporaneo o permanente) a risorse (come account, immagini, file ecc.), allora usate OAuth.
  • Se hai bisogno di fornire l’accesso ad un’applicazione di un partner o di un cliente al tuo portale, allora usa SAML.
  • Se il tuo caso d’uso richiede una fonte di identità centralizzata, allora usa SAML (Identity provider).
  • Se il tuo caso d’uso coinvolge dispositivi mobili, allora OAuth2 con qualche forma di Bearer Tokens è appropriato.

Voglio usare sia SAML che OAuth. Posso?

Puoi usare SAML per l’autenticazione. Una volta che hai un token/asserzione SAML, puoi usarlo come token del portatore OAuth nell’intestazione del portatore HTTP per accedere alle risorse protette.

Recentemente, abbiamo avuto una richiesta dalla comunità PicketLink in questo senso.

https://docs.jboss.org/author/display/PLINK/REST+Service+to+convert+SAML+Tokens+Into+OAuth+Tokens

Qual è l’alternativa ai token XML SAML nel mondo OAuth?

Guarda il JSON Web Token (JWT): https://datatracker.ietf.org/doc/draft-ietf-oauth-json-web-token/

I token JWT Bearer possono essere usati con OAuth2.

Ci sono lavori in corso alla fondazione OpenID con OpenID Connect. http://openid.net/specs/openid-connect-basic-1_0-22.html

OpenID Connect è uno strato di identità sopra OAuth2 che può fornire informazioni sul profilo degli utenti dai server di autorizzazione (in base all’autenticazione che ha eseguito).

  • PicketLink Open Source Project at http://www.picketlink.org
  • OAuth Theory sul sito PicketLink.
  • IETF Web Authorization Working Group (http://datatracker.ietf.org/wg/oauth/charter/)
  • IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)
  • Google OAuth Document (https://developers.google.com/accounts/docs/OAuth2)
  • Microsoft Windows Live OAuth2 Document (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx)
  • Amazon Web Services e SAML http://aws.typepad.com/aws/2013/11/aws-identity-and-access-management-using-saml.html
  • Salesforce SAML. https://help.salesforce.com/apex/HTViewHelpDoc?id=sso_saml.htm&language=en
  • Google Apps SAML. https://developers.google.com/google-apps/sso/saml_reference_implementation
  • OpenID Connect http://openid.net/specs/openid-connect-basic-1_0-22.html

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *