SAML vs. OAuth : Lequel dois-je utiliser ?

Dans le cadre du projet PicketLink (http://www.picketlink.org ), on me pose des questions sur divers aspects de la sécurité, de la confiance et de la gestion des identités.

L’une des principales questions que l’on me pose est – « Quelle est la différence entre SAML et OAuth ? ». J’espère pouvoir utiliser cet article pour fournir mes réflexions sur ce sujet important. J’essaierai également d’indiquer divers cas d’utilisation où chacun d’eux est préféré.

Quelle est la grande différence entre SAML et OAuth ?

Informellement dans mes propres mots:

SAML (Security Assertion Markup Language) est une norme-cadre qui englobe des profils, des liaisons et des constructions pour réaliser l’authentification unique (SSO), la fédération et la gestion des identités.

OAuth (Open Authorization) est une norme pour l’autorisation des ressources. Elle ne traite pas de l’authentification.

Pour les définitions formelles,

Selon la page wikipedia sur SAML :

Security Assertion Markup Language est un format de données standard ouvert basé sur XML pour échanger des données d’authentification et d’autorisation entre parties, en particulier entre un fournisseur d’identité et un fournisseur de services.

selon OAuth.net

Un protocole ouvert pour permettre l’autorisation sécurisée dans une méthode simple et standard à partir d’applications web, mobiles et de bureau.

Quelles sont les autres différences ?

1. format de jeton ou de message<

SAML traite du XML comme construction de données ou format de jeton.

Les jetons OAuth peuvent être binaires, JSON ou SAML comme expliqué dans OAuth Bearer Tokens.

2. Transport

SAML a des Bindings qui utilisent HTTP comme HTTP POST Binding, HTTP REDIRECT Binding etc.

Mais il n’y a pas de restriction sur le format de transport. Vous pouvez utiliser SOAP ou JMS ou tout autre transport que vous souhaitez utiliser pour envoyer des jetons ou des messages SAML.

OAuth utilise exclusivement HTTP.

3. Portée

Même si SAML a été conçu pour être applicable ouvertement, il est généralement utilisé dans des scénarios de SSO d’entreprise –

  • au sein d’une entreprise ou
  • d’entreprise à partenaire ou
  • d’entreprise à cloud scénarios.

OAuth a été conçu pour être utilisé avec des applications sur Internet, principalement pour l’autorisation déléguée de ressources Internet. OAuth est conçu pour l’échelle Internet.

Quelles versions des normes dois-je utiliser ?

SAML v2.0 et OAuth v2.0 sont les dernières versions des normes.

Quand dois-je utiliser lesquelles ?

  • Si votre cas d’utilisation implique le SSO (lorsqu’au moins un acteur ou participant est une entreprise), alors utilisez SAML.
  • Si votre cas d’utilisation implique de fournir un accès (temporaire ou permanent) à des ressources (telles que des comptes, des images, des fichiers, etc.), alors utilisez OAuth.
  • Si vous devez donner accès à une application partenaire ou client à votre portail, alors utilisez SAML.
  • Si votre cas d’utilisation nécessite une source d’identité centralisée, alors utilisez SAML (fournisseur d’identité).
  • Si votre cas d’utilisation implique des appareils mobiles, alors OAuth2 avec une certaine forme de jetons porteurs est approprié.

Je veux utiliser à la fois SAML et OAuth. Le puis-je ?

Vous pouvez utiliser SAML pour l’authentification. Une fois que vous avez un jeton/une affirmation SAML, vous pouvez l’utiliser comme jeton de porteur OAuth dans l’en-tête de porteur HTTP pour accéder aux ressources protégées.

Récemment, nous avons eu une exigence de la communauté de PicketLink dans ce sens.

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

Quelle est l’alternative aux jetons SAML XML dans le monde OAuth ?

Regardez le jeton Web JSON (JWT) : https://datatracker.ietf.org/doc/draft-ietf-oauth-json-web-token/

Les tokens JWT Bearer peuvent être utilisés avec OAuth2.

Il y a un travail en cours à la fondation OpenID avec OpenID Connect. http://openid.net/specs/openid-connect-basic-1_0-22.html

OpenID Connect est une couche d’identité au-dessus d’OAuth2 qui peut fournir des informations sur le profil des utilisateurs à partir des serveurs d’autorisation (en fonction de l’authentification qu’il a effectuée).

  • PicketLink Open Source Project at http://www.picketlink.org
  • OAuth Theory on PicketLink site.
  • IETF Web Authorization Working Group (http://datatracker.ietf.org/wg/oauth/charter/)
  • IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)
  • Document OAuth de Google (https://developers.google.com/accounts/docs/OAuth2)
  • Document OAuth2 de Microsoft Windows Live (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx)
  • Amazon Web Services et 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
  • Gogle 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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *