Security Assertion Markup Language (SAML) ist ein offener Standard, der definiert, wie Anbieter sowohl Authentifizierungs- als auch Autorisierungsdienste anbieten können. Hier erfahren Sie alles, was Sie dazu wissen müssen. [...]
Was ist SAML und wofür wird es verwendet? Die Security Assertion Markup Language (SAML) ist ein offener Standard, der die gemeinsame Nutzung von Sicherheitsnachweisen durch mehrere Computer in einem Netzwerk ermöglicht. Der Standard beschreibt einen Rahmen, der es einem Computer ermöglicht, einige Sicherheitsfunktionen im Namen eines oder mehrerer anderer Computer auszuführen.
Streng genommen bezieht sich SAML auf die XML-Variante der Sprache, die zur Kodierung all dieser Informationen verwendet wird, aber der Begriff kann auch verschiedene Protokollnachrichten und Profile umfassen, die Teil des Standards sind. Da SAML ein offener Standard ist, kann er Sicherheitsmaßnahmen für verschiedene Anwendungen und Systeme unterschiedlicher Anbieter koordinieren. Daher verwenden viele Sicherheitsanbieter SAML als Grundlage für ihre kommerziellen Angebote, um Interoperabilität zu gewährleisten.
SAML 2.0 wurde 2005 eingeführt und ist nach wie vor die aktuelle Version des Standards. Die Vorgängerversion, 1.1, ist inzwischen weitgehend veraltet. (SAMLDiffs bietet eine gute Zusammenfassung der Unterschiede zwischen den Versionen [engl.]).
Was ist Single Sign-On?
SAML wurde zwar mit Blick auf eine Vielzahl von Anwendungsfällen entwickelt, doch der in der Praxis bei weitem häufigste ist Single Sign On (SSO). SSO, wie der Name schon sagt, ermöglicht es einem Benutzer, sich einmal anzumelden und auf mehrere Dienste zuzugreifen – Websites, Cloud– oder SaaS-Anwendungen, Dateifreigaben und so weiter. In einem SSO-Szenario lagern all diese Dienste ihre Authentifizierungs- und Autorisierungsfunktionen an ein einziges System aus, das dann Identitätsinformationen über den Benutzer an diese Dienste sendet.
In SAML geschriebene Dokumente sind eine Möglichkeit, Single Sign-On-Informationen zu übertragen. SAML ist aufgrund seiner Offenheit und Interoperabilität ein besonders attraktiver Kandidat für diese Aufgabe, da Kunden oft eine Single-Sign-On-Lösung wünschen, die Anwendungen verschiedener Anbieter verbinden kann.
Authentifizierung und Autorisierung
Bevor wir fortfahren, müssen wir zwei verschiedene Rollen diskutieren, die SAML in einem SSO-System spielen kann:
- Authentifizierung: Feststellen, dass die Benutzer die sind, die sie vorgeben zu sein
- Autorisierung: Feststellen, ob die Benutzer das Recht haben, auf bestimmte Systeme oder Inhalte zuzugreifen
Natürlich muss jede SSO-Plattform beide Rollen spielen, um ihre Aufgabe erfüllen zu können. Ein interessanter Punkt ist, dass SAML nicht zwingend für beide Aufgaben verwendet werden muss. Microsoft hat zum Beispiel eine SSO-Implementierung, die SAML für die Authentifizierung und OAuth (ein weiterer offener Standard, auf den wir später in diesem Artikel näher eingehen werden) für die Autorisierung verwendet.
Was ist ein SAML-Provider?
Im SAML-Jargon ist ein Provider eine Instanz – im Allgemeinen ein Server oder ein anderer Computer – innerhalb eines Systems, die dem Benutzer hilft, auf die gewünschten Dienste zuzugreifen, und die SAML-Dienste produziert oder in Anspruch nimmt. Im Allgemeinen werden die eigentlichen Programme, auf die Sie zugreifen möchten, wie SaaS-Anwendungen oder geschützte Dateiserver, als die Service Provider bezeichnet, während die Identitätsprovider sicherstellen, dass der Benutzer wirklich derjenige ist, der er vorgibt zu sein, oder dass er das Recht hat, auf die Systeme zuzugreifen, auf die er zuzugreifen versucht – mit anderen Worten, er bietet Authentifizierung oder Autorisierung.
Wichtig ist dabei, dass der SAML-Standard selbst nicht definiert, wie diese Provider ihre Arbeit verrichten. Stattdessen legt er fest, welche Informationen sie untereinander austauschen müssen und wie diese Kommunikation und ihr Ablauf strukturiert sind.
Was ist eine SAML-Assertion?
Eine SAML-Assertion ist das XML-Dokument, mit dem all die Informationen, die wir gerade besprochen haben, von einem Computer zum anderen übertragen werden. Sobald ein Identitätsprovider festgestellt hat, dass Sie derjenige sind, für den Sie sich ausgeben, und dass Sie das Recht haben, auf die Inhalte oder Dienste zuzugreifen, die Sie interessieren, sendet er eine SAML-Assertion an den Server, der Ihnen diese Dienste tatsächlich bereitstellen kann. Eine SAML-Assertion kann zur Erhöhung der Sicherheit verschlüsselt sein.
Weitere Informationen zu all diesen Begriffen finden Sie im offiziellen SAML-Glossar von OASIS (engl.).
Wie funktioniert die SAML-Authentifizierung? Ein Beispiel für einen SAML-Ablauf
Da dies alles etwas abstrakt erscheint, hier ein Beispiel, wie eine SAML-Authentifizierungstransaktion ablaufen würde. Der Benutzeragent wird in den meisten Fällen ein Webbrowser sein.
Stellen Sie sich vor, Sie sind der Benutzer in einer Umgebung mit Single Sign-On und versuchen, Zugang zu einer Ressource auf einem Server zu erhalten. Die Abfolge der Ereignisse sieht dann wie folgt aus:
- Sie versuchen, auf die Ressource auf dem Server zuzugreifen. Der Service Provider prüft, ob Sie bereits im System authentifiziert sind. Wenn ja, springen Sie zu Schritt 7. Ist dies nicht der Fall, beginnt der Dienstanbieter mit dem Authentifizierungsprozess.
- Der Service-Provider ermittelt den passenden Identitätsprovider für Sie und leitet Sie an diesen weiter – in diesem Fall an den Single Sign-On-Dienst.
- Ihr Browser sendet eine Authentifizierungsanfrage an den SSO-Dienst, der Sie dann identifiziert.
- Der SSO-Dienst gibt ein XHTML-Dokument zurück, das die vom Dienstanbieter benötigten Authentifizierungsinformationen in einem SAMLResponse-Parameter enthält.
- Der SAMLResponse-Parameter wird an den Service Provider weitergeleitet.
- Der Service Provider verarbeitet diese Antwort und erstellt einen Sicherheitskontext für Sie, d. h. 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 anfordern.
- Die Ressource wird endlich an Sie weitergeleitet!
Wenn Sie einen genaueren Blick auf den Inhalt der Nachrichten werfen möchten, die in einer SAML-Transaktion hin- und hergeschickt werden, sehen Sie sich die Beispiele von OneLogin (engl.) an. Sie können sich den vollständigen XML-Code für die Arten von Assertions ansehen, die in dem oben beschriebenen Szenario vom Identitätsprovider an den Service Provider übermittelt werden.
Implementierung von SAML
Sie werden bemerken, dass vieles hier ziemlich allgemein gehalten ist: So wird beispielsweise nicht erklärt, wie SAML weiß, welcher Identitätsanbieter der richtige ist, oder wie der Identitätsanbieter feststellt, dass Sie der sind, für den Sie sich ausgeben. Das liegt nicht nur daran, dass wir Dinge auslassen: Wie bereits erwähnt, definiert der SAML-Standard nicht, wie diese Dinge ablaufen, und lässt Anbietern und Implementierern viel Spielraum, wie sie diese Dinge einrichten.
Für die eigentliche Authentifizierung können mehrere Technologien verwendet werden, und die von Ihnen gewählten Technologien bestimmen die Details der SAML-Implementierung in Ihrer Umgebung. Aber egal, welche Wahl Sie treffen, SAML-Assertions werden Authentifizierungs- und Autorisierungsdaten von einem Anbieter zum anderen übertragen.
Vorteile von SAML-Authentifizierung
Der wichtigste Vorteil von SAML als Grundlage für eine SSO-Lösung ist, dass es sich um einen offenen Standard handelt. Wie wir gesehen haben, bedeutet dies, dass er von einer Vielzahl von IAM-Anbietern implementiert und in allumfassende Systeme wie Salesforce integriert werden kann. Es bedeutet auch, dass Provider von verschiedenen Anbietern miteinander kommunizieren können, solange sie sich an den SAML-Standard halten.
Da SAML ein XML-Dialekt ist, ist er auch sehr flexibel. Alle Arten von Daten können in einem SAML-Dokument übertragen werden, solange sie in XML wiedergegeben werden können.
SAML und OAuth: Was ist der Unterschied?
OAuth ist ein etwas neuerer Standard als SAML, der ab 2006 gemeinsam von Google und Twitter entwickelt wurde. Er wurde teilweise entwickelt, um die Unzulänglichkeiten von SAML auf mobilen Plattformen auszugleichen, und basiert auf JSON statt auf XML.
Was ist der Unterschied zwischen SAML und JSON, abgesehen von der nicht ganz so guten Unterstützung für mobile Geräte? Wie wir gesehen haben, definiert der SAML-Standard, wie Anbieter sowohl Authentifizierungs- als auch Autorisierungsdienste anbieten können. OAuth hingegen befasst sich nur mit der Autorisierung. OpenID Connect ist ein noch neuerer, 2014 entwickelter Standard, der Authentifizierungsdienste anbietet und auf OAuth aufgesetzt ist.
Ein weiterer wesentlicher Unterschied zwischen SAML und OAuth ist der Anwendungsfall. Während SAML theoretisch für die Verwendung im offenen Internet konzipiert wurde, wird es in der Praxis am häufigsten in Unternehmensnetzwerken für Single Sign-On eingesetzt. OAuth hingegen wurde von Google und Twitter für den Einsatz im Internet entwickelt.
*Josh Fruhlinger ist Schriftsteller und Redakteur und lebt in Los Angeles.
Be the first to comment