Sie lösen verschiedene Probleme.
SAML ist eine Reihe von Standards, die definiert wurden, um Informationen darüber auszutauschen, wer ein Benutzer ist, welche Attribute er hat, und um Ihnen die Möglichkeit zu geben, Zugriff auf etwas zu gewähren / zu verweigern oder sogar eine Authentifizierung anzufordern.
Bei OAuth geht es mehr darum, den Zugriff auf etwas zu delegieren. Sie erlauben im Grunde jemandem, so zu handeln, wie Sie es sind. Es wird am häufigsten verwendet, um Zugriffs-APIs zu gewähren, die etwas für Sie tun können.
Das sind zwei völlig verschiedene Dinge.
Einige Beispiele, die helfen könnten.
OAuth denke an ein Twitter. Nehmen wir an, Sie verwenden Google Buzz und Twitter und möchten eine App schreiben, um die beiden synchron zu halten. Grundsätzlich können Sie Vertrauen zwischen Ihrer App und Twitter herstellen. Wenn Sie die App zum ersten Mal mit Twitter verknüpfen, werden Sie klassisch aufgefordert, sich bei Twitter anzumelden. Anschließend wird das Bestätigungsfeld angezeigt, in dem Sie gefragt werden, ob Sie Zugriff auf «Ihren App-Namen» gewähren möchten. Sobald Sie auf "Ja" klicken, wurde die Vertrauensstellung hergestellt und Ihre App kann nun wie Sie auf Twitter agieren. Es kann Ihre Beiträge lesen und neue erstellen.
SAML - Denken Sie für SAML an eine Art "Vereinbarung" zwischen zwei nicht verwandten Mitgliedschaftssystemen. In unserem Fall können wir US Airways und Hertz verwenden. Es gibt keine gemeinsamen Anmeldeinformationen, mit denen Sie von einem Standort zum anderen gelangen können. Angenommen, Hertz möchte US Airways einen "Deal" anbieten. (Zugegeben, ich weiß, dass dies ein extremes Beispiel ist, aber ertrage es mit mir). Nach dem Kauf eines Fluges bieten sie ihren Vorsitzenden einen kostenlosen Mietwagen an. US Airways und Hertz würden eine Art Vertrauen aufbauen und den Benutzer identifizieren. In unserem Fall wäre unsere "Verbund-ID" die E-Mail-Adresse, und es wäre eine Einbahnstraße des Vertrauens. Hertz vertraut darauf, dass der US Airways-Identitätsanbieter ein Token liefert, das genau und sicher ist. Nach der Buchung des Fluges würde der US Airways-Identitätsanbieter einen Token generieren und angeben, wie er den Benutzer authentifiziert hat, sowie "Attribute" über die Person in unserem Fall. Das wichtigste Attribut wäre seine Statusstufe in US Airways. Sobald der Token ausgefüllt wurde, übergibt er ihn über eine Referenz oder wird in einer URL verschlüsselt. Sobald wir bei Hertz angekommen sind, überprüft er den Token, validiert ihn und kann nun den kostenlosen Mietwagen zulassen.
Das Problem bei diesem SAML-Beispiel ist, dass es nur ein spezieller Anwendungsfall von vielen ist. SAML ist ein Standard und es gibt fast zu viele Möglichkeiten, ihn zu implementieren.
Wenn Sie sich nicht für die Autorisierung interessieren, können Sie auch fast argumentieren, dass die Authentifizierung über SAML und OpenID bestätigt wird .
Schauen Sie sich diese einfache Erklärung an, die hier zusammengefasst ist:
Für Leute, die mit OO-Designmustern vertraut sind, gibt es meiner Meinung nach eine schöne Folge von Wrapper-Mustern . Denken Sie an Fassaden- , Dekorations- und Proxy- Muster. Grundsätzlich sind diese alle gleich, sie sind nur Wrapper ... Der Unterschied ist die Absicht jedes Musters .
In ähnlicher Weise ermöglichen SAML, OAuth und OpenID unterschiedliche Absichten über einen gemeinsamen zugrunde liegenden Mechanismus , der für eine private Interaktion an einen Dienstanbieter / eine Identitätsbehörde umgeleitet wird, gefolgt von einer Umleitung an die ursprüngliche Drittanbieter-App.
Wenn Sie sich im Internet umschauen, werden Sie feststellen, dass sich die Funktionen der Protokolle überschneiden. Die Authentifizierung über OAuth ist durchaus sinnvoll. SSO über OAuth ist jedoch möglicherweise nicht sehr sinnvoll, da SAML und OpenID speziell auf die Verbundidentität ausgerichtet sind.
Für die Frage selbst klingt SAML im Unternehmenskontext angemessener als OAuth für SSO . Ich wette, wenn Sie sich die Apps von Drittanbietern ansehen, die Sie in Ihre Unternehmensidentitäten integrieren möchten, werden Sie feststellen, dass sie bereits für die Integration in SAML / LDAP / Radius usw. konzipiert sind. IMO OAuth eignet sich besser für die Internetinteraktion zwischen Anwendungen oder möglicherweise Anwendungen, die eine serviceorientierte Architektur in einer großen Unternehmensumgebung umfassen.
Autorisierungsregeln können in einer Unternehmensumgebung auch auf andere Weise festgelegt werden. LDAP ist hierfür ein gängiges Werkzeug. Das Organisieren von Benutzern in Gruppen und das Zuordnen von Anwendungsberechtigungen zur Gruppenmitgliedschaft ist ein weit verbreiteter Ansatz. In diesem Fall kann LDAP auch zur Authentifizierung verwendet werden. Active Directory ist ein gutes Beispiel, obwohl ich OpenLDAP bevorzuge.
quelle
Guter guter Artikel hier
SAML (Security Assertion Markup Language) ist eine Reihe von Standards für Single Sign On (SSO), Federation und Identity Management.
Beispiel : Ein Benutzer (Auftraggeber) authentifiziert sich bei einer Flugbuchungswebsite, AirFlyer (Identitätsanbieter), die SSO über SAML mit einer Shuttle-Buchungswebsite konfiguriert hat, Shuttler (Dienstanbieter). Nach der Authentifizierung bei Flyer kann der Benutzer Shuttles bei Shuttler buchen, ohne dass eine Authentifizierung erforderlich ist
OAuth (Open Authorization) ist ein Standard für die Autorisierung von Ressourcen. Es geht nicht um Authentifizierung.
Beispiel : Eine mobile App für die gemeinsame Nutzung von Fotos (OAuth-Verbraucher), mit der Benutzer Fotos von ihrem Instagram-Konto (OAuth-Anbieter) importieren können, die ein temporäres Zugriffstoken oder einen Schlüssel an die App für die gemeinsame Nutzung von Fotos sendet, die nach einigen Stunden abläuft.
quelle
SAML hat eine Vielzahl von "Profilen" zur Auswahl, mit denen andere Benutzer sich bei Ihrer Site "anmelden" können. SAML-P oder SAML Passive sind sehr verbreitet und recht einfach einzurichten. WS-Trust ist ähnlich und ermöglicht auch den Zusammenschluss von Websites.
OAuth ist für die Autorisierung vorgesehen. Hier können Sie mehr lesen:
Was ist der Unterschied zwischen OpenID und OAuth?
quelle
Sie behandeln einen subtilen Anwendungsfall
quelle
SAML
dient zur Authentifizierung - wird hauptsächlich im Single Sign On- Szenario verwendet.OAuth
dient zur Autorisierung von Ressourcendarstellungen.JSON Web Token (JWT) ist eine Alternative für SAML XML-Token. JWT kann mit OAuth verwendet werden
Eine gute Referenz ist SAML vs. OAuth: Welches sollte ich verwenden?
quelle
Die Begriffe Verbund bedeuten wirklich systemübergreifende Verbindungsidentitäten. Es hängt mit SSO zusammen, aber sie sind nicht ganz gleich. Ich fand diesen Blog-Beitrag sehr hilfreich in Bezug darauf, was Föderation wirklich bedeutet.
quelle