Die Security Assertion Markup Language ( SAML, ausgesprochen SAM-el) ist ein offener Standard für den Austausch von Authentifizierungs- und Autorisierungsdaten zwischen Parteien, insbesondere zwischen einem Identitätsanbieter und einem Dienstanbieter. SAML ist eine XML- basierte Auszeichnungssprache für Sicherheitsaussagen (Anweisungen, mit denen Dienstanbieter Zugriffssteuerungsentscheidungen treffen).SAML ist auch:
Ein wichtiger Anwendungsfall für SAML-Adressen ist das Single Sign-On (SSO) des Webbrowsers. Single Sign-On ist innerhalb einer Sicherheitsdomäne (z. B.mithilfe von Cookies )relativ einfach durchzuführen. DieAusweitung von SSO auf Sicherheitsdomänen ist jedoch schwieriger und führt zur Verbreitung nicht interoperabler proprietärer Technologien.Das SSO-Profil des SAML-Webbrowsers wurde spezifiziert und standardisiert, um die Interoperabilität zu fördern.
Die SAML-Spezifikation definiert drei Rollen: den Principal (normalerweise ein menschlicher Benutzer), den Identitätsanbieter (IdP) und den Dienstanbieter (SP).In dem von SAML angesprochenen primären Anwendungsfall fordert der Principal einen Dienst vom Dienstanbieter an.Der Dienstanbieter fordert vom Identitätsanbieter eine Authentifizierungsbestätigung an und erhält diese.Auf der Grundlage dieser Behauptung kann der Dienstanbieter eine Zugriffssteuerungsentscheidung treffen, dh er kann entscheiden, ob der Dienst für den verbundenen Prinzipal ausgeführt werden soll.
Im Zentrum der SAML-Behauptung steht ein Thema (ein Prinzipal im Kontext einer bestimmten Sicherheitsdomäne), über das etwas behauptet wird.Das Thema ist normalerweise (aber nicht unbedingt) ein Mensch.Wie in der technischen Übersicht zu SAML V2.0 werden die Begriffe Betreff und Prinzipal in diesem Dokument synonym verwendet.
Vor der Übermittlung der subjektbasierten Zusicherung an den SP fordert der IdP möglicherweise einige Informationen vom Principal an, z. B. einen Benutzernamen und ein Kennwort, um den Principal zu authentifizieren.SAML gibt den Inhalt der Zusicherung an, die vom IdP an den SP übergeben wird.In SAML kann ein Identitätsanbieter vielen Dienstanbietern SAML-Zusicherungen bereitstellen.In ähnlicher Weise kann sich ein SP auf Aussagen vieler unabhängiger IdPs verlassen und diesen vertrauen.
SAML gibt die Authentifizierungsmethode beim Identitätsanbieter nicht an.Der IdP verwendet möglicherweise einen Benutzernamen und ein Kennwort oder eine andere Form der Authentifizierung, einschließlich der Multi-Faktor-Authentifizierung. Ein Verzeichnisdienst wie RADIUS, LDAP oder Active Directory, mit dem sich Benutzer mit einem Benutzernamen und einem Kennwort anmelden können, ist eine typische Quelle für Authentifizierungstoken bei einem Identitätsanbieter.Die beliebten Internet-Dienste für soziale Netzwerke bieten auch Identitätsdienste, die theoretisch zur Unterstützung des SAML-Austauschs verwendet werden könnten.
Das OASIS Security Services Technical Committee (SSTC), das im Januar 2001 zum ersten Mal zusammentrat, wurde beauftragt, "ein XML-Framework für den Austausch von Authentifizierungs- und Autorisierungsinformationen zu definieren".Zu diesem Zweck wurde in den ersten beiden Monaten dieses Jahres folgendes geistiges Eigentum zum SSTC beigetragen:
Aufbauend auf diesen ersten Beiträgen kündigte OASIS im November 2002 die Spezifikation Security Assertion Markup Language (SAML) V1.0 als OASIS-Standard an.
In der Zwischenzeit schlug die Liberty Alliance, ein großes Konsortium aus Unternehmen, gemeinnützigen Organisationen und Regierungsorganisationen, eine Erweiterung des SAML-Standards vor, das als Liberty Identity Federation Framework (ID-FF) bezeichnet wird.Wie sein SAML-Vorgänger schlug Liberty ID-FF ein standardisiertes, domänenübergreifendes, webbasiertes Single-Sign-On-Framework vor.Darüber hinaus beschrieb Liberty einen Vertrauenskreis, in dem jeder teilnehmenden Domäne vertraut wird, um die zur Identifizierung eines Benutzers verwendeten Prozesse, den Typ des verwendeten Authentifizierungssystems und alle mit den resultierenden Authentifizierungsanmeldeinformationen verbundenen Richtlinien genau zu dokumentieren.Andere Mitglieder des Vertrauenskreises könnten diese Richtlinien dann prüfen, um festzustellen, ob sie solchen Informationen vertrauen sollen.
Während Liberty ID-FF entwickelte, begann der SSTC mit der Arbeit an einem geringfügigen Upgrade auf den SAML-Standard.Die resultierende SAML V1.1-Spezifikation wurde im September 2003 vom SSTC ratifiziert. Im November desselben Jahres trug Liberty ID-FF 1.2 zu OASIS bei und säte damit die Samen für die nächste Hauptversion von SAML.Im März 2005 wurde SAML V2.0 als OASIS-Standard angekündigt.SAML V2.0 repräsentiert die Konvergenz von Liberty ID-FF und proprietären Erweiterungen, die vom Shibboleth- Projekt bereitgestellt wurden, sowie frühen Versionen von SAML selbst.Die meisten SAML-Implementierungen unterstützen V2.0, während viele aus Gründen der Abwärtskompatibilität weiterhin V1.1 unterstützen.Bis Januar 2008 wurde die Bereitstellung von SAML V2.0 in Regierungs-, Hochschul- und Handelsunternehmen weltweit üblich.
SAML wurde seit V1.0 einer kleinen und einer großen Revision unterzogen.
Die Liberty Alliance hat im September 2003 ihr Identity Federation Framework (ID-FF) zum OASIS SSTC beigetragen:
Die Versionen 1.0 und 1.1 von SAML sind ähnlich, obwohl kleine Unterschiede bestehen. Die Unterschiede zwischen SAML 2.0 und SAML 1.1 sind jedoch erheblich.Obwohl die beiden Standards denselben Anwendungsfall behandeln, ist SAML 2.0 nicht mit seinem Vorgänger kompatibel.
Obwohl ID-FF 1.2 als Grundlage für SAML 2.0 zu OASIS beigetragen wurde, gibt es einige wichtige Unterschiede zwischen SAML 2.0 und ID-FF 1.2.Insbesondere sind die beiden Spezifikationen trotz ihrer gemeinsamen Wurzeln nicht kompatibel.
SAML basiert auf einer Reihe bestehender Standards:
SAML definiert XML-basierte Zusicherungen und Protokolle, Bindungen und Profile.Der Begriff SAML Core bezieht sich auf die allgemeine Syntax und Semantik von SAML-Zusicherungen sowie auf das Protokoll, mit dem diese Zusicherungen von einer Systemeinheit an eine andere angefordert und übertragen werden. Das SAML-Protokoll bezieht sich auf das, was übertragen wird, nicht wie (letzteres wird durch die Wahl der Bindung bestimmt).Daher definiert SAML Core "nackte" SAML-Zusicherungen zusammen mit SAML-Anforderungs- und Antwortelementen.
Eine SAML-Bindung bestimmt, wie SAML-Anforderungen und -Antworten auf Standardnachrichten- oder Kommunikationsprotokolle abgebildet werden.Eine wichtige (synchrone) Bindung ist die SAML SOAP-Bindung.
Ein SAML-Profil ist eine konkrete Manifestation eines definierten Anwendungsfalls unter Verwendung einer bestimmten Kombination von Behauptungen, Protokollen und Bindungen.
Eine SAML- Zusicherung enthält ein Paket mit Sicherheitsinformationen:
lt;saml:Assertion...gt;..lt;/saml:Assertiongt;
Eine vertrauende Partei interpretiert eine Behauptung lose wie folgt:
Die Behauptung A wurde zum Zeitpunkt t vom Emittenten R in Bezug auf das Thema S ausgestellt, sofern die Bedingungen C gültig sind.
SAML-Zusicherungen werden normalerweise von Identitätsanbietern an Dienstanbieter übertragen.Zusicherungen enthalten Aussagen, mit denen Dienstanbieter Zugriffssteuerungsentscheidungen treffen.SAML bietet drei Arten von Anweisungen:
Authentifizierungsanweisungen bestätigen dem Dienstanbieter, dass sich der Principal tatsächlich zu einem bestimmten Zeitpunkt beim Identitätsanbieter unter Verwendung einer bestimmten Authentifizierungsmethode authentifiziert hat.Andere Informationen über den authentifizierten Principal (als Authentifizierungskontext bezeichnet) können in einer Authentifizierungsanweisung offengelegt werden.
Eine Attributanweisung bestätigt, dass ein Prinzipal bestimmten Attributen zugeordnet ist.Ein Attribut ist einfach ein Name-Wert-Paar. Vertrauende Parteien verwenden Attribute, um Entscheidungen zur Zugriffskontrolle zu treffen.
In einer Autorisierungsentscheidungserklärung wird bestätigt, dass ein Auftraggeber die Aktion A für die Ressource R ausführen darf,wenn Beweise E vorliegen.Die Aussagekraft von Genehmigungsentscheidungserklärungen in SAML ist absichtlich eingeschränkt.Fortgeschrittenere Anwendungsfälle sollten stattdessen XACML verwenden.
Ein SAML- Protokoll beschreibt, wie bestimmte SAML-Elemente (einschließlich Zusicherungen) in SAML-Anforderungs- und -Antwortelementen gepackt werden, und gibt die Verarbeitungsregeln an, denen SAML-Entitäten beim Erstellen oder Verwenden dieser Elemente folgen müssen.Ein SAML-Protokoll ist größtenteils ein einfaches Anforderungs-Antwort-Protokoll.
Der wichtigste Typ der SAML-Protokollanforderung wird als Abfrage bezeichnet. Ein Dienstanbieter stellt eine Anfrage direkt an einen Identitätsanbieter über einen sicheren Rückkanal.Daher sind Abfragenachrichten normalerweise an SOAP gebunden.
Entsprechend den drei Arten von Anweisungen gibt es drei Arten von SAML-Abfragen:
Das Ergebnis einer Attributabfrage ist eine SAML-Antwort, die eine Zusicherung enthält, die selbst eine Attributanweisung enthält.Im SAML 2.0-Thema finden Sie ein Beispiel für die Abfrage / Antwort von Attributen.
Über Abfragen hinaus gibt SAML 1.1 keine anderen Protokolle an.
SAML 2.0 erweitert den Begriff des Protokolls erheblich.Die folgenden Protokolle werden in SAML 2.0 Core ausführlich beschrieben:
Die meisten dieser Protokolle sind neu in SAML 2.0.
Eine SAML- Bindung ist eine Zuordnung einer SAML-Protokollnachricht zu Standardnachrichtenformaten und / oder Kommunikationsprotokollen.Beispielsweise gibt die SAML-SOAP-Bindung an, wie eine SAML-Nachricht in einem SOAP-Umschlag gekapselt ist, der selbst an eine HTTP-Nachricht gebunden ist.
SAML 1.1 gibt nur eine Bindung an, die SAML SOAP-Bindung.Neben SOAP sind in SAML 1.1 Webbrowser-SSO die Vorläufer der HTTP-POST-Bindung, der HTTP-Umleitungsbindung und der HTTP-Artefaktbindung impliziert.Diese sind jedoch nicht explizit definiert und werden nur in Verbindung mit SAML 1.1 Web Browser SSO verwendet.Der Begriff der Bindung ist erst mit SAML 2.0 vollständig entwickelt.
SAML 2.0 trennt das Bindungskonzept vollständig vom zugrunde liegenden Profil.Tatsächlich gibt es in SAML 2.0 eine brandneue Bindungsspezifikation, die die folgenden eigenständigen Bindungen definiert:
Diese Reorganisation bietet enorme Flexibilität: Am Beispiel eines Webbrowser-SSO allein kann ein Dienstanbieter aus vier Bindungen (HTTP-Umleitung, HTTP-POST und zwei Varianten von HTTP-Artefakt) auswählen, während der Identitätsanbieter über drei Bindungsoptionen (HTTP-POST plus) verfügt zwei Formen von HTTP-Artefakten) für insgesamt zwölf (12) mögliche Bereitstellungen des SAML 2.0-Webbrowser-SSO-Profils.
Ein SAML- Profil beschreibt detailliert, wie SAML-Zusicherungen, -Protokolle und -Bindungen kombiniert werden, um einen definierten Anwendungsfall zu unterstützen.Das wichtigste SAML-Profil ist das Webbrowser-SSO-Profil.
SAML 1.1 gibt zwei Formen von Webbrowser-SSO an, das Browser- / Artefaktprofil und das Browser- / POST-Profil.Letzterer übergibt Zusicherungen als Wert, während Browser / Artefakt Zusicherungen als Referenz übergibt.Infolgedessen erfordert Browser / Artefakt einen Rückkanal-SAML-Austausch über SOAP.In SAML 1.1 beginnen alle Flows der Einfachheit halber mit einer Anforderung beim Identitätsanbieter.Proprietäre Erweiterungen des von IdP initiierten Basisflusses wurden vorgeschlagen (zum Beispielvon Shibboleth ).
Das Webbrowser-SSO-Profil wurde für SAML 2.0 komplett überarbeitet.Konzeptionell sind SAML 1.1 Browser / Artifact und Browser / POST Sonderfälle von SAML 2.0 Webbrowser SSO.Letzteres ist aufgrund des neuen "Plug-and-Play" -Bindungsdesigns von SAML 2.0 wesentlich flexibler als sein Gegenstück zu SAML 1.1.Im Gegensatz zu früheren Versionen beginnen SAML 2.0-Browserflüsse mit einer Anfrage beim Dienstanbieter.Dies bietet eine größere Flexibilität, aber SP-initiierte Flows führen natürlich zu dem sogenannten Identity Provider Discovery- Problem, auf das sich heute viele Forschungsarbeiten konzentrieren.Zusätzlich zum Webbrowser-SSO führt SAML 2.0 zahlreiche neue Profile ein:
Neben dem SAML-Webbrowser-SSO-Profil enthalten einige wichtige Profile von Drittanbietern von SAML:
Die SAML-Spezifikationen empfehlen und schreiben in einigen Fällen verschiedene Sicherheitsmechanismen vor:
Anforderungen werden häufig in Bezug auf (gegenseitige) Authentifizierung, Integrität und Vertraulichkeit formuliert, sodass Implementierern und Bereitstellern die Wahl des Sicherheitsmechanismus überlassen bleibt.
Der primäre SAML-Anwendungsfall heißt Web Browser Single Sign-On (SSO). Ein Benutzer verwendet einen Benutzeragenten (normalerweise einen Webbrowser), um eine Webressource anzufordern, die von einem SAML- Dienstanbieter geschützt wird.Der Dienstanbieter, der die Identität des anfordernden Benutzers wissen möchte, sendetüber den Benutzeragenteneine Authentifizierungsanforderung an einen SAML- Identitätsanbieter. Der resultierende Protokollfluss ist in der folgenden Abbildung dargestellt.
https://sp.example.com/myresourceDer Dienstanbieter führt im Namen der Zielressource eine Sicherheitsüberprüfung durch.Wenn beim Dienstanbieter bereits ein gültiger Sicherheitskontext vorhanden ist, überspringen Sie die Schritte 2 bis 7.
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=requestDer Wert des
SAMLRequest
Parameters (durch denrequest
obigenPlatzhalter gekennzeichnet) ist die Base64- Codierung eines deflationierten lt;samlp:AuthnRequestgt;
Elements.AuthnRequest
(über denSAMLRequest
URL-Abfrageparametergesendete) und führt eine Sicherheitsüberprüfung durch.Wenn der Benutzer keinen gültigen Sicherheitskontext hat, identifiziert der Identitätsanbieter den Benutzer (Details weggelassen).lt;form method="post" action="https://sp.example.com/SAML2/SSO/POST"...gt;lt;input type="hidden" name="SAMLResponse" value="response" /gt;...lt;input type="submit" value="Submit" /gt;lt;/formgt;Der Wert des
SAMLResponse
Elements (oben mit dem Platzhalter gekennzeichnetresponse
) ist die base64-Codierung eineslt;samlp:Responsegt;
Elements.SAMLResponse
Parameters wird in Schritt 4 dem XHTML-Formular entnommen.https://sp.example.com/myresource
In SAML 1.1 beginnt der Ablauf mit einer Anforderung an den standortübergreifenden Übertragungsdienst des Identitätsanbieters in Schritt 3.
Im obigen Beispielablauf sind alle dargestellten Austausche Front-Channel-Austausche, dh ein HTTP-Benutzeragent (Browser) kommuniziert bei jedem Schritt mit einer SAML-Entität.Insbesondere gibt es keinen Rückkanalaustausch oderkeinedirekte Kommunikation zwischen dem Dienstanbieter und dem Identitätsanbieter.Front-Channel-Austausch führt zu einfachen Protokollflüssen, bei denen alle Nachrichtenmithilfe einer einfachen HTTP-Bindung (GET oder POST) als Wert übergeben werden.In der Tat wird der im vorherigen Abschnitt beschriebene Ablauf manchmal als Lightweight Web Browser SSO-Profil bezeichnet.
Alternativ können Nachrichten zur Erhöhung der Sicherheit oder des Datenschutzes als Referenz weitergeleitet werden.Beispielsweise kann ein Identitätsanbieter einen Verweis auf eine SAML-Zusicherung (als Artefakt bezeichnet)bereitstellen,anstatt die Zusicherung direkt über den Benutzeragenten zu übertragen.Anschließend fordert der Dienstanbieter die tatsächliche Bestätigung über einen Rückkanal an.Ein solcher Rückkanalaustausch wird als SOAP- Nachrichtenaustausch (SAML über SOAP über HTTP) angegeben.Im Allgemeinen wird jeder SAML-Austausch über einen sicheren Rückkanal als SOAP-Nachrichtenaustausch durchgeführt.
Auf dem Rückkanal gibt SAML die Verwendung von SOAP 1.1 an.Die Verwendung von SOAP als Bindungsmechanismus ist jedoch optional.Bei jeder SAML-Bereitstellung wird ausgewählt, welche Bindungen geeignet sind.