Was ist der Unterschied zwischen OpenID und SAML?


149

Was ist der Unterschied zwischen OpenID und SAML?

Antworten:


162

Original OpenID 2.0 gegen SAML

Es handelt sich um zwei verschiedene Authentifizierungsprotokolle, die sich auf technischer Ebene unterscheiden.

Aus der Ferne beginnen Unterschiede, wenn Benutzer die Authentifizierung initiieren. Bei OpenID ist eine Benutzeranmeldung normalerweise eine HTTP-Adresse der Ressource, die für die Authentifizierung verantwortlich ist. Auf der anderen Seite basiert SAML auf einer expliziten Vertrauensstellung zwischen Ihrer Site und dem Identitätsanbieter, sodass es eher ungewöhnlich ist, Anmeldeinformationen von einer unbekannten Site zu akzeptieren.

OpenID-Identitäten sind im Internet leicht zu umgehen. Als Entwickler können Sie dann einfach Benutzer von sehr unterschiedlichen OpenID-Anbietern akzeptieren. Andererseits muss ein SAML-Anbieter normalerweise im Voraus codiert werden, und Sie bündeln Ihre Anwendung nur mit ausgewählten Identitätsanbietern. Es ist möglich, die Liste der akzeptierten OpenID-Identitätsanbieter einzugrenzen, aber ich denke, dies würde gegen das allgemeine OpenID-Konzept verstoßen.

Mit OpenID akzeptieren Sie Identitäten, die von beliebigen Servern stammen. Jemand behauptet zu sein http://someopenid.provider.com/john.smith. Wie werden Sie dies mit einem Benutzer in Ihrer Datenbank abgleichen? Zum Beispiel, indem Sie diese Informationen in einem neuen Konto speichern und erkennen, wenn der Benutzer Ihre Website erneut besucht. Beachten Sie, dass anderen Informationen über den Benutzer (einschließlich seines Namens oder seiner E-Mail-Adresse) nicht vertraut werden kann!

Wenn andererseits zwischen Ihrer Anwendung und dem SAML-ID-Anbieter eine explizite Vertrauensstellung besteht, können Sie vollständige Informationen über den Benutzer einschließlich Name und E-Mail-Adresse abrufen. Diese Informationen können nur aufgrund der Vertrauensstellung als vertrauenswürdig eingestuft werden. Dies bedeutet, dass Sie eher glauben, dass der ID-Anbieter alle Informationen irgendwie validiert hat, und dass Sie ihm auf Anwendungsebene vertrauen können. Wenn Benutzer mit SAML-Token kommen, die von einem unbekannten Anbieter ausgestellt wurden, lehnt Ihre Anwendung die Authentifizierung lediglich ab.

OpenID Connect gegen SAML

(Abschnitt hinzugefügt 07-2017, erweitert 08-2018)

Diese Antwort stammt aus dem Jahr 2011 und zu diesem Zeitpunkt stand OpenID für OpenID 2.0 . Später, irgendwann im Jahr 2012, wurde OAuth2.0 veröffentlicht und 2014 OpenID Connect (eine detailliertere Zeitleiste hier ).

Für jeden, der dies heutzutage liest - OpenID Connect ist nicht dieselbe OpenID, auf die sich die ursprüngliche Antwort bezieht , sondern eine Reihe von Erweiterungen für OAuth2.0.

Während diese Antwort aus konzeptioneller Sicht etwas Licht ins Dunkel bringen kann, ist eine sehr prägnante Version für jemanden mit OAuth2.0-Hintergrund, dass OpenID Connect tatsächlich OAuth2.0 ist , aber eine Standardmethode zum Abfragen der Benutzerinformationen nach dem Zugriffstoken hinzufügt ist verfügbar.

In Bezug auf die ursprüngliche Frage: Was ist der Hauptunterschied zwischen OpenID Connect (OAuth2.0) und SAML darin, wie die Vertrauensbeziehung zwischen der Anwendung und dem Identitätsanbieter aufgebaut wird:

  • SAML baut die Vertrauensbeziehung auf einer digitalen Signatur auf. Vom Identitätsanbieter ausgegebene SAML-Token sind signierte XMLs. Die Anwendung überprüft die Signatur selbst und das von ihr vorgelegte Zertifikat. Die Benutzerinformationen sind unter anderem in einem SAML-Token enthalten.

  • OAuth2 erstellt die Vertrauensstellung bei einem direkten HTTP-Aufruf von der Anwendung an die Identität. Die Anforderung enthält das Zugriffstoken (von der Anwendung während des Protokollflusses erhalten) und die Antwort enthält die Informationen über den Benutzer.

  • OpenID Connect erweitert dies weiter, um es zu ermöglichen, die Identität ohne diesen zusätzlichen Schritt zu erhalten, der den Anruf von der Anwendung an den Identitätsanbieter beinhaltet. Die Idee basiert auf der Tatsache, dass OpenID Connect-Anbieter tatsächlich zwei Token ausgeben access_token, das gleiche, das OAuth2.0- Token und das neue, id_tokendas ein JWT- Token ist, das vom Identitätsanbieter signiert wurde. Die Anwendung kann das verwenden id_token, um eine lokale Sitzung basierend auf den im JWT-Token enthaltenen Ansprüchen einzurichten. Sie id_token kann jedoch nicht zum weiteren Abfragen anderer Dienste verwendet werden. Bei solchen Aufrufen von Diensten Dritter sollte das weiterhin verwendet werdenaccess_token. Sie können sich OpenID Connect dann als Hybrid zwischen SAML2 (signiertes Token) und OAuth2 (Zugriffstoken) vorstellen, da OpenID Connect nur beides umfasst.


12
Das Konzept des "Vertrauens" ist in der SAML-Kultur sehr wichtig, da es aus einer Kultur der Föderation stammt. In SAML-Verbänden sollte ein Konto eine 1: 1-Beziehung zu einer einzelnen Person mit einer aktuellen Beziehung zum IdP sein, die sowohl die Benutzerauthentifizierung als auch die Autorisierung "bestätigt". Unternehmen, die IdPs in einem Verband betreiben, müssen die Richtlinien zur Kontowährung und -verifizierung einhalten. Zur Veranschaulichung können die Deprovisionierung von Konten und die (Zulässigkeit von) rollenbasierten Konten Bereiche mit besonderen Unterschieden sein. Außerdem ist SAML zunehmend "unternehmerischer" und OpenID "webby".
Cameron Kerr

90

OpenID und SAML2 basieren beide auf demselben Konzept der Verbundidentität. Im Folgenden sind einige der Unterschiede zwischen ihnen aufgeführt.

  1. SAML2 unterstützt Single Sign-Out, OpenID jedoch nicht
  2. SAML2-Dienstanbieter sind mit den SAML2-Identitätsanbietern gekoppelt, OpenID-vertrauende Parteien sind jedoch nicht mit OpenID-Anbietern gekoppelt. OpenID verfügt über ein Erkennungsprotokoll, das den entsprechenden OpenID-Anbieter dynamisch erkennt, sobald eine OpenID angegeben wurde. SAML verfügt über ein Erkennungsprotokoll, das auf dem Identity Provider Discovery Service Protocol basiert.
  3. Mit SAML2 ist der Benutzer mit dem SAML2-IdP verbunden - Ihre SAML2-ID ist nur für den SAML2-IdP gültig, der sie ausgestellt hat. Mit OpenID besitzen Sie jedoch Ihre Kennung und können sie jedem gewünschten OpenID-Anbieter zuordnen.
  4. SAML2 hat verschiedene Bindungen, während die einzige Bindung, die OpenID hat, HTTP ist
  5. SAML2 kann entweder vom Service Provider (SP) oder vom Identity Provider (IdP) initiiert werden. OpenID wurde jedoch immer von SP initiiert.
  6. SAML 2 basiert auf XML, OpenID nicht.
  7. Die meisten der in den letzten 3 Jahren entwickelten Anwendungen unterstützten nur OpenID Connect.
  8. 92% der 8B + -Authentifizierungsanforderungen, die Microsoft Azure AD im Mai 2018 übermittelte, stammten von OpenID Connect-fähigen Anwendungen.

1
2. nicht unbedingt: SP kann Identitäten nur von einer bestimmten IP vertrauen. Aber stimmen Sie zu, die Unterstützung einer IP ist die Standardeinstellung und wird mit OpenID
Oliv

Wenn Sie eine Open-Source-SAML-Bibliothek von beispielsweise okta oder onelogin verwenden, können Sie die Bibliothek für beide Identitätsanbieter verwenden oder müssen Sie für jede eine andere Bibliothek verwenden?
Blankman

16

Abgesehen von den technischen Details, die für die Partei ziemlich spät sind, verstehe ich, dass der größte Unterschied zwischen SAML und anderen Authentifizierungsstandards (inkl. OpenID) darin besteht

Für SAML müssen sich der Identity Provider (IDP) und der Service Provider (SP) vorab kennen, vorkonfiguriert , statisch authentifiziert und autorisiert sein. OpenId (+ Connect) hat keine solche Anforderung.

Dies ist wichtig für IDPs, die die vollständige Kontrolle darüber haben möchten, wer auf die Daten zugreift. Ein Teil des Standards besteht darin, zu konfigurieren, was für bestimmte SPs bereitgestellt wird.

Beispielsweise möchte eine Bank möglicherweise nicht, dass ihre Benutzer auf andere Dienste als einige vordefinierte zugreifen (aufgrund von Vorschriften oder anderen strengen Sicherheitsregeln).

Dies bedeutet nicht, dass ein OpenId-IDP eine solche Einschränkung nicht durchsetzen kann. Ein OpenID-Implementierer kann den Zugriff steuern, dies ist jedoch nicht der Zweck von OpenID.

Abgesehen von den vordefinierten, strengen, statischen Unterschieden bei der Zugriffskontrolle sind OpenID Connect und SAML konzeptionell (nicht technisch) ähnlich.

Fazit: Wenn Sie ein SP sind, sollten Sie die Anforderungen Ihrer Kunden unterstützen:

  1. Wenn Ihr Kunde ein einzelner Endbenutzer ist (z. B. mit seiner Google-ID), vergessen Sie SAML. Verwenden Sie OpenID Connect.
  2. Wenn Ihr Kunde eine Bank ist, die möchte, dass ihre Mitarbeiter Ihren Service nutzen und nur statische Datenlisten exportieren, die sie Ihrem Service zur Verfügung stellen, möchte die Bank wahrscheinlich, dass Sie SAML unterstützen. Die Bank hat möglicherweise eine OpenID-Implementierung mit Kundenbeschränkung, was Ihr Glückstag sein wird :)

1
Dies ist der einfachste Weg, es auszudrücken. Gute Beispiele, danke für die Erklärung!
BBK

10

Sowohl SAML als auch OpenID können als Identitätsanbieter (abgekürzt IdP) fungieren, dh als dezentrales Authentifizierungsprotokoll (Single Sign-On-Identität).

Die S ICHERHEIT A ssertion M arkup L anguage ( SAML ) ist ein Satz von Profilen für in Sicherheitsdomänen Authentifizierungs- und Autorisierungsdaten austauscht. Im SAML-Domänenmodell ist ein Identitätsanbieter eine spezielle Art von Authentifizierungsberechtigung. Insbesondere ist ein SAML-Identitätsanbieter eine Systementität, die Authentifizierungszusicherungen in Verbindung mit einem SSO-Profil von SAML ausgibt. Eine vertrauende Partei, die diese Authentifizierungszusicherungen verwendet, wird als SAML-Dienstanbieter bezeichnet. Quelle

O pen ID C onnect ( OIDC ) ist eine Authentifizierungsschicht über OAuth 2.0, einem Autorisierungsframework. Der Standard wird von der OpenID Foundation kontrolliert. OAuth ist eher für das Autorisierungsprotokoll als für ein Authentifizierungsprotokoll gedacht, und OpenID wurde speziell als Authentifizierungsprotokoll entwickelt. OIDC verwendet einfache JSON-Web-Token (JWT), die von JavaScript leichter verwendet werden können.

Anwendungsfall Szenario:

Verwenden Sie OAuth, wenn sich Ihre Benutzer möglicherweise nur mit Facebook oder Twitter anmelden möchten. Verwenden Sie OpenID, wenn Ihre Benutzer Nackenbärte sind, die ihre eigenen OpenID-Anbieter betreiben, weil sie "nicht möchten, dass andere ihre Identität besitzen".

Geben Sie hier die Bildbeschreibung ein
Quelle


Dies ist eine verwirrende Antwort. Sie haben "openID connect" im Text korrekt beschrieben, openID jedoch weggelassen. Open ID Connect ist keine OpenID.
Tomm P
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.