it-swarm.com.de

Was ist der Unterschied zwischen OpenID und SAML?

Was ist der Unterschied zwischen OpenID und SAML?

109
metdos

Ursprüngliche OpenID 2.0 vs SAML

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

Aus der Ferne beginnen die Unterschiede, wenn Benutzer die Authentifizierung einleiten. 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. Daher ist es eher unüblich, Anmeldeinformationen von einer unbekannten Site zu akzeptieren.

OpenID-Identitäten sind leicht im Netz zu finden. Als Entwickler können Sie dann nur Benutzer akzeptieren, die von sehr unterschiedlichen OpenID-Anbietern stammen. Andererseits muss ein SAML-Anbieter normalerweise vorab 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äre gegen das allgemeine OpenID-Konzept.

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

Wenn jedoch zwischen Ihrer Anwendung und dem SAML-ID-Anbieter eine explizite Vertrauensstellung besteht, können Sie vollständige Informationen über den Benutzer erhalten, einschließlich Name und E-Mail-Adresse. Diese Informationen können nur aufgrund der Vertrauensbeziehung als vertrauenswürdig eingestuft werden. Dies bedeutet, dass Sie der Ansicht sind, dass der ID-Anbieter alle Informationen irgendwie überprüft hat und Sie auf der Anwendungsebene darauf vertrauen können. Wenn Benutzer SAML-Token von einem unbekannten Anbieter erhalten, lehnt Ihre Anwendung die Authentifizierung ab.

OpenID Connect vs SAML

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

Diese Antwortdaten 2011 und damals OpenID standen für OpenID 2.0 . Später, irgendwann um 2012, wurde OAuth2.0 veröffentlicht, und 2014 wurde OpenID Connect (eine detailliertere Zeitleiste hier ).

Für alle, die dies heute lesen - OpenID Connect ist nicht die gleiche OpenID, auf die sich die ursprüngliche Antwort bezieht, sondern eine Reihe von Erweiterungen für OAuth2.0.

Während diese Antwort etwas Licht aus dem konzeptionellen Standpunkt bringen kann, ist eine sehr prägnante Version für jemanden mit Hintergrund von OAuth2.0, dass OpenID Connect is in der Tat OAuth2.0 ist, jedoch eine Standardmethode hinzufügt von Abfragen der Benutzerinformationen , nachdem das Zugriffstoken verfügbar ist. 

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

  • SAML baut die Vertrauensbeziehung auf einer digitalen Signatur auf, SAML-Token, die vom Identitätsanbieter ausgegeben werden, sind signierte XML-Dateien. Die Anwendung validiert die Signatur selbst und das von ihnen übermittelte Zertifikat. Die Benutzerinformationen sind neben anderen Informationen in einem SAML-Token enthalten.

  • OAuth2 erstellt die Vertrauensstellung für einen direkten HTTPs-Aufruf von der Anwendung zur Identität. Die Anforderung enthält das Zugriffstoken (wird von der Anwendung während des Protokollflusses abgerufen) und die Antwort enthält die Informationen zum Benutzer. 

  • OpenID Connect erweitert dies weiter, um die Identität ohne dieses zusätzlichen Schritts zu erhalten, der den Aufruf der Anwendung an den Identitätsanbieter beinhaltet. Die Idee basiert auf der Tatsache, dass OpenID Connect-Provider tatsächlich zwei Token ausgeben, den access_token, genau die gleichen OAuth2.0-Ausgaben und den neuen, den id_token, der ein _ jwt _ ist. token, signiert vom Identitätsanbieter. Die Anwendung kann das ID-Token verwenden, um eine lokale Sitzung einzurichten, die auf Ansprüchen basiert, die im JWT-Token enthalten sind, jedoch mit dem ID-Token kann nicht verwendet werden, um andere Dienste weiter abzufragen Zugangstoken. Sie können sich OpenID Connect als eine Mischung aus SAML2 (signiertes Token) und OAuth2 (Zugriffstoken) vorstellen, da OpenID Connect nur beides umfasst.

130
Wiktor Zychla

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

  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 Discovery-Protokoll, das den entsprechenden OpenID-Provider dynamisch ermittelt, sobald eine OpenID vergeben wurde. SAML verfügt über ein Erkennungsprotokoll, das auf dem Identity Provider Discovery Service Protocol basiert.
  3. Bei SAML2 ist der Benutzer an den SAML2-IdP gekoppelt. Ihre SAML2-ID ist nur für den SAML2-IdP gültig, der ihn ausgestellt hat. Mit OpenID besitzen Sie jedoch Ihre Kennung und können diese jedem beliebigen OpenID-Anbieter zuordnen.
  4. SAML2 hat verschiedene Bindungen, während die einzige OpenID-Bindung HTTP ist
  5. SAML2 kann entweder durch einen Service Provider (SP) oder durch Identity Provider (IdP) initiiert werden. OpenID wurde jedoch immer SP initiiert.
  6. SAML 2 basiert auf XML, OpenID jedoch nicht.
  7. Die meisten Anwendungen, die in den letzten 3 Jahren entwickelt wurden, unterstützten nur OpenID Connect.
  8. 92% der im Mai 2018 übermittelten Authentifizierungsanforderungen von 8B + für Microsoft Azure AD stammten von OpenID Connect-fähigen Anwendungen.
82

Wenn ich die technischen Details beiseite lege, für die Party recht spät, verstehe ich, dass der größte Unterschied zwischen SAML und anderen Auth-Standards (inkl. OpenID) darin besteht

SAML setzt voraus, dass sich der Identity Provider (IDP) und der Service Provider (SP) gegenseitig kennen, vorkonfigurierte, static Authentifizierung und Autorisierung. OpenId (+ Connect) hat keine solche Anforderung.

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

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

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.

Anders als die vordefinierte, strikte, statische, Zugriffskontrolldifferenz, konzeptionell (nicht technisch), sind OpenID Connect und SAML ähnlich.

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

  1. Wenn es sich bei Ihrem Kunden um einen Endkunden handelt (beispielsweise über die 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 er Ihrem Service zur Verfügung stellt, wird die Bank wahrscheinlich von SAML Unterstützung verlangen. Die Bank verfügt möglicherweise über eine OpenID-Implementierung mit Clienteinschränkung, was Ihr Glückstag sein wird :)
6

@Prabath: OpenID unterstützt Single Sign-On.

Zu der Frage: OpenID ermöglicht die Benutzerauthentifizierung über zentralisierte Identitätsanbieter (IdP) über mehrere vertrauenswürdige Websites oder vertrauende Parteien (RP). Wenn ein Benutzer authentifiziert ist, kann er sich frei zwischen mehreren OpenID-fähigen Websites bewegen, ohne seine Anmeldeinformationen erneut eingeben zu müssen. 

SAML ist ein auf XML basierender offener Industriestandard für den Austausch von Benutzerauthentifizierungs- und Autorisierungsinformationen (Sicherheitsbestätigungen) zwischen Diensteanbietern und Verbrauchern. 

1
Nicholas

Sowohl SAML als auch OpenID können als Identitätsanbieter (abgekürzt IdP) fungieren, d. H. Als dezentralisiertes Authentifizierungsprotokoll (Single Sign-On Identity).

Die S ecurity Asertion M arkup L Sprache (SAML) ist a Satz von Profilen für den Austausch von Authentifizierungs- und Autorisierungsdaten in Sicherheitsdomänen. Im SAML-Domänenmodell ist ein Identitätsanbieter eine besondere Art von Authentifizierungsautorität. Ein SAML-Identitätsanbieter ist insbesondere eine Systementität, die Authentifizierungsbestätigungen in Verbindung mit einem SSO-Profil von SAML ausgibt. Eine vertrauende Partei, die diese Authentifizierungsbestätigungen verwendet, wird als SAML-Dienstanbieter bezeichnet. Quelle

O pen IDC onnect (OIDC) ist eine Authentifizierungsschicht über OAuth 2.0, einem Berechtigungs-Framework . Der Standard wird von der OpenID Foundation kontrolliert. OAuth ist für das Autorisierungsprotokoll und nicht für ein Authentifizierungsprotokoll und OpenID, die speziell als Authentifizierungsprotokoll konzipiert wurden. OIDC verwendet einfache JSON-Web-Tokens (JWT), deren Verwendung durch JavaScript einfacher ist.

Anwendungsfall Szenario:

Verwenden Sie OAuth, wenn Ihre Benutzer sich nur bei Facebook oder Twitter anmelden möchten. Verwenden Sie OpenID, wenn Ihre Benutzer Nackenbären sind, die ihre eigenen OpenID-Provider betreiben, weil sie "nicht wollen, dass andere Personen ihre Identität besitzen".

0
Premraj