web-dev-qa-db-fra.com

SAML vs connexion fédérée avec OAuth

Quelle est la différence entre la connexion SAML et la connexion fédérée avec OAuth? Quelle solution est plus logique si une entreprise souhaite utiliser une application Web tierce, mais souhaite également une authentification unique et devenir l’autorité d’authentification?

95
Chung Wu

Ils résolvent différents problèmes.

SAML est un ensemble de normes qui ont été définies pour partager des informations sur qui. un utilisateur est, quels sont ses attributs, et vous donnent un moyen d’accorder/refuser l’accès à quelque chose ou même de demander une authentification.

OAuth consiste davantage à déléguer l'accès à quelque chose. Vous autorisez fondamentalement quelqu'un à "agir" comme vous. Il est le plus couramment utilisé pour accorder des API permettant d’agir en votre nom.

Ce sont deux choses complètement différentes.


Quelques exemples qui pourraient aider.

OAuth pense à un Twitter. Disons que vous utilisez Google Buzz et Twitter, et que vous souhaitez écrire une application pour pouvoir les synchroniser. Vous pouvez en principe établir la confiance entre votre application et Twitter. Pour la première fois, vous liez l’application à Twitter, vous exécutez l’invite classique pour vous connecter à Twitter, puis la boîte de confirmation qui s’affiche vous demande "Souhaitez-vous autoriser l’accès à" nom de votre application "? Une fois que vous avez cliqué sur "oui", la confiance a été établie et votre application peut désormais agir comme vous sur Twitter. Il peut lire vos messages et en créer de nouveaux.

SAML - Pour SAML, imaginez un type d ’" accord "entre deux systèmes d’adhésion non liés. Dans notre cas, nous pouvons utiliser US Airways et Hertz. Il n’existe aucun ensemble d’informations d’identité partagées pouvant vous mener d’un site à un autre, mais disons que Hertz souhaite proposer un "accord" à US Airways. (Certes, je sais que c'est un exemple extrême, mais supportez-moi). Après l'achat d'un vol, ils offriront une voiture de location gratuite à ses membres présidents. US Airways et Hertz établiraient une forme de confiance et un moyen d'identifier l'utilisateur. Dans notre cas, notre "identifiant fédéré" serait l'adresse e-mail et il s'agirait d'un ensemble de confiance à sens unique. Hertz espère que le fournisseur d'identité d'US Airways enverra un jeton précis et sécurisé. Après avoir réservé le vol, le fournisseur d’identité US Airways génère un jeton et indique comment il a authentifié l’utilisateur, ainsi que des "attributs" concernant la personne. Dans notre cas, l’attribut le plus important est son statut dans US Airways. Une fois que le jeton a été rempli, il le passe via un type de référence ou est encodé dans une URL. Une fois arrivé à Hertz, il examine le jeton, le valide et permet maintenant la location de voiture gratuite.

Le problème avec cet exemple SAML est qu'il ne s'agit que d'un cas d'utilisation spécialisé. SAML est un standard et il existe presque trop de façons de le mettre en œuvre.


Alternativement, si vous ne vous souciez pas de l'autorisation, vous pourriez presque prétendre que l'authentification via SAML et OpenID .

125
Nix

Regardez cette explication simple résumée ici:

Beaucoup de gens sont confus quant aux différences entre SAML, OpenID et OAuth, mais c’est en réalité très simple. Bien qu'il y ait un certain chevauchement, il existe un moyen très simple de distinguer les trois.

OpenID - Single Sign-On pour les consommateurs

SAML - Single Sign-On pour les utilisateurs d'entreprise

OAuth - autorisation de l'API entre les applications

Pour les personnes à l'aise avec OO modèles de conception, je pense qu'il existe un corollaire de Nice pour modèles de wrapper . Pensez à Façade , Décorateur et motifs de procuration . Fondamentalement, ce sont tous les mêmes, ils ne sont que des wrappers ... La différence est l'intention de chaque motif .

De même, SAML, OAuth et OpenID facilitent des intentions différentes via un mécanisme sous-jacent commun , qui correspond à une redirection vers un fournisseur de service/une autorité d'identité pour une interaction privée, suivie d'une redirection vers l'application tierce d'origine.

En regardant autour de vous, vous constaterez un chevauchement entre les capacités des protocoles. Authentification via OAuth est parfaitement raisonnable. SSO over OAuth n'a peut-être pas beaucoup de sens, car SAML et OpenID sont spécifiquement conçus pour l'identité fédérée.

Pour la question elle-même, dans un contexte d'entreprise, SAML semble plus approprié que OAuth pour SSO . Je parierais si vous regardez les applications tierces que vous souhaitez intégrer à vos identités d'entreprise, vous constaterez qu'elles sont déjà conçues pour s'intégrer à SAML/LDAP/Radius, etc. IMO OAuth est plus approprié pour une interaction Internet entre applications ou éventuellement des applications comprenant une architecture orientée service dans un environnement d'entreprise de grande taille.

Les règles d'autorisation peuvent également être spécifiées dans un environnement d'entreprise. LDAP est un outil commun pour cela. Organiser les utilisateurs en groupes et associer les privilèges d'applications à l'appartenance à un groupe est une approche répandue. Il se trouve que LDAP peut également être utilisé pour l'authentification. Active Directory est un bon exemple, même si je préfère OpenLDAP.

37
quickshiftin

Ils gèrent un cas d'utilisation subtile

  • SAML - Informations d'identification de partage (par exemple, SSO) d'un utilisateur avec différents fournisseurs de services (par exemple, Web ou service Web)
  • OAuth - Un utilisateur déléguant une application pour accéder à une ressource au nom de son/sa
2
yudis

SAML propose une variété de "profils" permettant aux autres utilisateurs de se "connecter" à votre site. SAML-P ou SAML Passive est très courant et assez simple à configurer. WS-Trust est similaire et permet également une fédération entre sites Web.

OAuth est conçu pour une autorisation. Vous pouvez lire plus ici:

Quelle est la différence entre OpenID et OAuth?

2
goodguys_activate

Trouvé Bon article ici

enter image description here

SAML (Security Assertion Markup Language) est un ensemble de normes permettant d’obtenir la signature unique (SSO), la fédération et la gestion des identités.

Exemple : un utilisateur (principal) s'authentifie auprès d'un site Web de réservation de vols, AirFlyer (fournisseur d'identité), dont la connexion unique est configurée via SAML avec un site Web de réservation de navette, Shuttler. (fournisseur de services). Une fois authentifié auprès de Flyer, l'utilisateur peut réserver des navettes sur Shuttler sans exiger d'authentification.

OAuth (Open Authorization) est une norme pour l'autorisation de ressources. Cela ne traite pas de l'authentification.

Exemple : application mobile de partage de photos (consommateur OAuth) permettant aux utilisateurs d'importer des photos depuis leur compte Instagram (fournisseur OAuth), qui envoie un jeton ou une clé d'accès temporaire. à l'application de partage de photos qui expire après quelques heures.

2
Jack Ryder

SAML est utilisé pour l'authentification - principalement utilisé dans le scénario Single Sign On . OAuth est pour l'autorisation des représentations de ressources.

Jeton Web JSON (JWT) est une alternative aux jetons XML SAML. JWT peut être utilisé avec OAuth

Une bonne référence est SAML vs OAuth: Lequel dois-je utiliser?

1
Lijo

Les termes fédération désignent en réalité les identités de connexion entre les systèmes. C'est lié au SSO mais ce n'est pas tout à fait pareil. J'ai trouvé cet article de blog vraiment utile en termes de ce que la fédération signifie vraiment.

0
Jake miyazaki