Security Assertion Markup Language – kurz SAML – bezeichnet einen offenen Standard, der in Sachen IT-Sicherheit eine tragende Rolle spielt. [...]
Security Assertion Markup Language (SAML) ist ein Standard, der definiert, wie Anbieter sowohl Authentifizierungs- als auch Autorisierungsdienste anbieten können.
SAML – Definition
Die Security Assertion Markup Language (SAML) ist ein offener Standard, der mehreren Rechnern in einem Netzwerk ermöglicht, Sicherheitsnachweise gemeinsam zu nutzen. SAML beschreibt ein Framework, das es einem Computer ermöglicht, Sicherheitsfunktionen auch im Namen anderer auszuführen.
- Authentifizierung: sind die Benutzer die, die sie vorgeben zu sein?
- Autorisierung: haben Benutzer das Recht, auf bestimmte Systeme oder Inhalte zuzugreifen?
Streng genommen bezieht sich SAML auf die Auszeichnungssprache XML, die zur Kodierung all dieser Informationen verwendet wird. Der Begriff kann aber auch verschiedene Protokollnachrichten und Profile umfassen, die Teil des Standards sind. Die aktuelle Version der Security Assertion Markup Language – 2.0 – wurde im Jahr 2005 eingeführt und ist nach wie vor aktuell. Die Vorgängerversion, SAML 1.1, ist inzwischen weitgehend veraltet. Einen Überblick über die Unterschiede zwischen den beiden Versionen finden Sie in dieser Zusammenfassung.
SAML ist ein Weg, um Single Sign-on (SSO) zu implementieren. SSO ist auch der häufigste Anwendungsfall für die Security Assertion Markup Language. Hierbei meldet sich ein Benutzer einmal an und kann dann auf mehrere Dienste zugreifen – zum Beispiel auf Websites, Cloud- oder SaaS-Anwendungen sowie auf Dateien. In einem SSO-Szenario lagern all diese Dienste ihre Authentifizierungs- und Autorisierungsfunktionen an ein einziges System aus, das dann Identitätsinformationen über den Benutzer aussendet. Diese Informationen können über Dokumente übertragen werden, die in SAML geschrieben sind.
Security Assertion Markup Language – Provider
Im SAML-Jargon ist ein Provider eine Entität – im Allgemeinen ein Server oder ein anderer Rechner – innerhalb eines Systems, die den Benutzer dabei unterstützt, auf die von ihm gewünschten Services zuzugreifen. Systeme, die SAML-Dienste bereitstellen oder beziehen, werden allgemein als Service Provider bezeichnet. Deren wichtigste Kategorie bilden die Identity Provider.
Diese bilden wie bereits erläutert die Instanz innerhalb des Systems, die sicherstellt, dass der Benutzer wirklich derjenige ist, der er vorgibt zu sein. Identity Provider sorgen also für die Authentifizierung. Sie entscheiden auch darüber, auf welche Services der User über verschiedene Entitäten im System zugreifen darf, also die Autorisierung.
SAML ist ein offener Standard – jeder kann also eine kommerzielle oder quelloffene Implementierung vornehmen und Authentifizierungsdienste anbieten. Im Allgemeinen ist diese Funktionalität in Identity- und Access-Management (IAM) Lösungen integriert. Allerdings können IAM-Funktionalitäten auch Teil von umfassenderen Systemen oder Infrastrukturplattformen sein. Zur aktuellen Anbieterlandschaft gehören etwa:
Active Directory Federation Services (ADFS)
Azure AD (Microsoft Azure Active Directory)
Eine SAML Assertion ist das XML-Dokument, das alle Informationen vom einen Rechner zum anderen überträgt. Sobald ein Identity Provider einen Anwender authentifiziert und autorisiert hat, sendet er die SAML Assertion an den Server, der dem Betreffenden die angefragten Services bereitstellt. Für ein höheres Sicherheitsniveau können SAML Assertions auch verschlüsselt werden. Weitere wertvolle Informationen zu sämtlichen Begriffen in diesem Zusammenhang finden Sie im offiziellen SAML-Glossar von OASIS (PDF).
SAML – Authentifizierungsprozess
Dies mag alles etwas abstrakt erscheinen, darum betrachten wir ein Beispiel für den Ablauf einer SAML-Authentifizierungstransaktion:
Der Benutzeragent ist in den meisten Fällen ein Webbrowser. Stellen Sie sich vor, Sie sind der Benutzer in einer Umgebung mit Single Sign-on und versuchen, Zugriff auf eine Serverressource zu erhalten. Die Abfolge der Ereignisse sieht folgendermaßen aus:
- Sie versuchen, auf die Ressource zuzugreifen, der in der SAML-Terminologie ein Service Provider ist. Dieser prüft, ob Sie bereits im System authentifiziert sind. Ist das der Fall, können Sie direkt mit Punkt 7 fortfahren. Andernfalls initiiert der Service Provider den Authentifizierungsprozess.
- Der Service Provider ermittelt den für Sie geeigneten Identity Provider und leitet Sie an diesen weiter – in diesem Fall wäre das der Single-Sign-on-Service.
- Ihr Browser sendet eine Authentifizierungsanfrage an den SSO-Dienst, der Sie anschließend identifiziert.
- Der SSO Service gibt ein XHTML-Dokument zurück, das die vom Service Provider benötigten Authentifizierungsinformationen in einem SAMLResponse-Parameter enthält.
- Der SAMLResponse-Parameter wird an den Service Provider weitergeleitet.
- Der Service Provider verarbeitet die Antwort und erstellt einen Sicherheitskontext für Sie, das heißt er meldet Sie an und teilt Ihnen dann mit, wo sich die angeforderte Ressource befindet.
- Mit diesen Informationen können Sie nun die gewünschte Ressource erneut anfordern.
- Die Ressource steht zur Verfügung.
Wenn Sie einen genaueren Blick auf die Informationen werfen wollen, die im Rahmen einer SAML-Transaktion hin- und hergeschickt werden, sollten Sie einen Blick auf diese Beispiele von OneLogin werfen.
Security Assertion Markup Language – Implementierung
Sie werden schnell feststellen, dass vieles in Zusammenhang mit SAML eher allgemein gehalten ist. Es wird zum Beispiel nicht erklärt, wie SAML herausfindet, welcher Identity Provider der richtige ist oder wie dieser Ihre Identität verifiziert. Das liegt in der Natur der Sache: SAML definiert nicht, wie diese Prozesse ablaufen. Das verschafft der IT-Abteilung viel Spielraum bei der Konfiguration.
Wie bereits erwähnt, können beispielsweise mehrere Technologien für die Authentifizierung verwendet werden. Die von Ihnen gewählten Technologien bestimmen über die Details der tatsächlichen SAML-Implementierung in Ihrer Umgebung. Unabhängig davon, welche Wahl Sie treffen, übertragen SAML Assertions Authentifizierungs- und Autorisierungsdaten zwischen den Providern.
Der wichtigste Vorteil von SAML als Grundlage für eine SSO-Lösung ist, dass es sich um einen offenen Standard handelt, der in einer Vielzahl von IAM-Lösungen implementiert und auch in umfassendere Systeme wie Salesforce integriert werden kann. Ein weiterer Vorteil: Provider verschiedener Anbieter können über SAML miteinander kommunizieren.
Darüber hinaus ist die Security Assertion Markup Language als XML-„Dialekt“ sehr flexibel: Jede Art von Daten kann in einem SAML-Dokument übertragen werden, solange es im XML-Format gerendert wird.
SAML vs. OAuth – Unterschiede
OAuth ist ein jüngerer Standard als SAML, der ab 2006 gemeinsam von Google und Twitter entwickelt wurde. OAuth basiert nicht auf XML sondern auf JSON und sollte die Unzulänglichkeiten von SAML auf mobilen Plattformen ausgleichen. Abgesehen von diesem Punkt unterscheiden sich OAuth und SAML grundlegend: Während SAML definiert, wie Provider sowohl Authentifizierungs- als auch Autorisierungsdienste anbieten können, befasst sich OAuth ausschließlich mit der Autorisierung. Der 2014 entwickelte Standard OpenID Connect setzt auf OAuth auf und ermöglicht Authentifizierungsdienste.
Ein weiterer wichtiger Unterschied zwischen SAML und OAuth besteht in ihren jeweiligen Use Cases: Während SAML theoretisch für die Verwendung im offenen Internet konzipiert wurde, wird es in der Praxis am häufigsten für Single-Sign-On-Funktionalitäten in Unternehmensnetzwerken eingesetzt. OAuth hingegen wurde von Google und Twitter für den Einsatz im World Wide Web entwickelt.
Security Assertion Markup Language – Tutorials
Wenn Sie tiefer ins Thema Security Assertion Markup Language abtauchen möchten, finden Sie im Netz einige ausführliche SAML-Tutorials:
- OneLogin beschreibt, wie man für SAML auf fünf verschiedenen Webentwicklungsplattformen entwickelt.
- Amazon erklärt, wie Sie einen SAMLIdentity Provider für AWS erstellen.
- Wenn Sie ZenDesk verwenden, können Sie Single Sign-On mit Hilfe von Active Directory, ADFS und SAML einrichten.
- Hier erfahren Sie, wie SAML Ihrer Rails-App SSO-Funktionalitäten verleiht.
- Auth0 liefert tiefgehende Details zur Funktionsweise der SAML-Authentifizierung.
* Josh Fruhlinger ist freier Autor in Los Angeles und schreibt unter anderem für unsere US-Schwesterpublikation CSO Online.
Be the first to comment