Die Security Assertion Markup Language, kurz SAML, kann das webbasierte Arbeiten mit zahlreichen Programmen komfortabler und sicherer gestalten. SAML ist ein XML-basiertes Datenformat zum Austausch von Authentifizierungs- und Autorisierungsinformationen. Doch wie genau ist die Funktionsweise und welche Vorteile gibt es?
Was ist SAML überhaupt?
SAML (Security Assertion Markup Language) ist ein XML-basiertes Framework, welches benutzt werden kann, um Benutzer zu authentisieren und autorisieren, sowie Attribute und Privilegien von Benutzern zu kommunizieren. Dies wurde vom OASIS Security Services Technical Committee (SSTC) definiert. Bei diesem Framework ist es nicht wichtig, dass kritische Daten wie beispielsweise Kennworte oder Benutzererkennung zwischen Anwendungen getauscht werden. Der SSO-Mechanismus übernimmt die Authentifizierung transparent im Hintergrund. Dazu wird ein Session-Cookie verwendet, welches ein Ablaufdatum enthält. Der SAML-Standard wird heute als erprobtes, stabiles und reifes Framework angesehen. Die erste Version wurde im November 2002 veröffentlicht.
Funktionsweise von SAML
Um zu verstehen, wie SAML funktioniert, müssen drei Parteien eingeführt werden. Diese wären die Identity Provider (IdP), Service Provider (SP) und Benutzer. Letzterer muss sich über den User Agent des Browsers authentifizieren. Der Identity Provider ist der Authentifizierungsdienst, der eine Anmeldemaske für den Anwender bereitstellt und den Browser zum Service Provider leitet. Der Identity Provider speichert Informationen über den Benutzer, wie Benutzername, Kennwort, Rollen, etc. und wird häufig als SAML Asserting Party bezeichnet. Der Service Provider bietet Services, die eine Authentifizierung fordern. Jedoch übernimmt der Service Provider nicht die Authentifizierung, sondern schickt sie transparent an den Identity Provider weiter. Der Service Provider wird häufig auch als SAML Relying Party bezeichnet.
Leserservice: Unsere Berichte sind oft sehr ausführlich. Daher bieten wir mit der PDF „SAML“ eine Zusendung des Artikels im PDF-Format zur späteren Sichtung an. Nutzen Sie das Angebot um sich die Praxis-Impulse in Ruhe durchzulesen, Sie können hierfür auch einfach auf das PDF-Symbol klicken.
Vorteile von SAML
Die Hauptgründe für SAML sind folgende: Es ist standardisiert, sicher und ermöglicht eine einfache Handhabung durch Benutzer. Durch die Standardisierung ermöglicht das Framework die Interoperabilität verschiedener Anwendungen, ganz unabhängig von der eingesetzten Technologie. Es werden offene Architekturen und Identity Federation ermöglicht. Dies geschieht, ohne dass proprietäre, geschlossene und herstellerspezifische Lösungen eingesetzt werden müssen. Darüber hinaus kann eine zentrale Authentifizierung durch SAML implementiert werden. Hierfür kann eine zentrale Benutzerdatenbank genutzt werden, die stark abgesichert ist. Außerdem verifiziert SAML Benutzeridentitäten, wodurch Anwendungen keine Benutzerdaten speichern oder synchronisieren müssen.
Ein weiterer Pluspunkt ist die Benutzerfreundlichkeit. Bei SAML können Eigenschaften und Rechte von Benutzern an einen Service Provider (einer Anwendung) sicher weitergegeben werden. Hierfür werden sogenannte Assertions, ein Konzept aus dem SAML-Standard, genutzt. Assertions ermöglichen es dem Identity Provider (Benutzerdatenbank), detaillierte Informationen über Benutzer bereitzustellen, insbesondere zur Art der Zugriffsrechte, die Benutzer auf verschiedenen Anwendungen haben. Ein weiterer Vorteil ist, dass viele Dienste SAML nativ oder über Plugin unterstützen.
Ablauf einer Authentifizierung mit SAML
Hier zeigen wir Ihnen ein Authentifizierungsbeispiel mit SAML:
- Bei einem Zugriff eines Anwenders auf eine Ressource eines Services, unabhängig ob intern oder extern, stellt der Anwender einen GET-Request an den Service. In unserem Beispiel die Anmelden-URL „it-wegweiser.intern/login“.
— - Der Service gibt dem Anwender einen Redirect an den „SingleSignOnService Link“ des Identity Providers. Der Redirect enthält die „sampl:authnRequest“, die vom Identity Provider unterzeichnet werden soll.
— - Nun ruft der Browser des Anwenders den „SingleSignOnService Link“ des Identity Providers auf. Dabei reicht er die „sampl:authnRequest“ ein.
— - Daraufhin muss sich der Anwender authentifizieren.
— - Anschließend erhält er eine „samp:response“ in Form eines XHTML Formulars zurück. Dieses Formular beinhaltet unter anderem den „AssertionConsumerService Link“.
— - Der „AssertionConsumerService Link“ wird vom User Agent des Browsers verwendet, um einen POST-Request an den Service Provider des Services zu stellen.
— - Anschließend erstellt der Service Provider einen Security Contex und leitet den Anwender an die ursprüngliche Anmelden-URL weiter.