SAML Framework
Was ist SAML?
Das SAML Framework basiert auf dem XML-Format und stellt Funktionen zur Verfügung, um Authentifizierungs- und Autorisierungsdaten auszutauschen und diese zu überprüfen, beispielsweise für die Durchführung eines Anmeldevorgangs in einer Webanwendung.
SAML als Framework besteht dabei aus verschiedenen Komponenten: SAML Assertions, einem Protokoll für das Senden und Anfordern von SAML Assertions und sogenannten SAML Provider. Diese Provider lassen sich in die zwei Arten Identity-Provider und Service-Provider unterteilen.
SAML regelt insgesamt die Übergabe von Autorisierungsdaten von einem Identity-Provider zu einem oder mehreren Service-Providern.
Wie funktioniert SAML in der Praxis?
Mit dem SAML Protokoll bzw. dem SAML Framework werden Authentifizierungs-Lösungen für z.B. Webanwendungen implementiert.
Am Authentifizierungsprozess per SAML sind insgesamt drei Parteien beteiligt und der Vorgang besteht dabei aus verschiedenen Schritten und Datentransfers zwischen den Parteien. Angestoßen wird der Prozess vom Nutzer, der über einen User-Agent (z.B. ein Webbrowser) eine Anmeldung über z.B. eine Webanwendung tätigt.
Der Nutzer möchte sich bei einem Service-Provider authentifizieren und benötigt dafür ein Dokument von einem Identity-Provider, das dem Service-Provider die Korrektheit der eingegebenen Anmeldedaten des Nutzers bestätigt.
Diese Anfrage gelangt somit zuerst, in Form von einer SAML Assertion, zu einem Identity-Provider, der die Anmeldedaten des Nutzers abgleicht mit den Einträgen seiner Datenbank.
SAML Assertions sind hierbei Dokumente, die „Behauptungen“ über die Daten von einem Nutzer enthalten, z.B. zu seinem angeblichen Nutzernamen oder seiner angeblichen E-Mail-Adresse. Bevor diese durch den Service-Provider bestätigt sind gelten Sie somit im Prozess lediglich als offene Behauptungen.
In dem Fall, dass die Daten korrekt sind und der Nutzer damit dem System bereits bekannt ist, sendet der Identity-Provider dem Service-Provider eine Bestätigung der Identität des Nutzers (bzw. Behauptung über die Identität des Nutzers) ebenfalls in Form von einer SAML Assertion. Dieses Dokument wird von dem Identity-Provider mithilfe eines Zertifikates signiert, damit der Service-Provider überprüfen kann, ob der Identity-Provider eine „vertrauensvolle“ Stelle darstellt.
Im nächsten Schritt gleicht der Service-Provider die angegebenen Daten mit seiner Datenbank ab und gewährt dem Nutzer den Zugang, falls die Daten korrekt sind. Dafür sendet er dem Browser (User-Agent) des Nutzers einen Session-Cookie, den dieser dann für alle weiteren Vorgänge und Interaktionen mit den Services verwenden kann, um sich zu legitimieren.
In welchen Bereichen wird SAML verwendet?
Das SAML-Framework wird für hauptsächlich für die Implementierung von sogenannten Single Sign-On Systemen eingesetzt. Bei diesem Konzept ist ein Identity-Provider mit mehreren Service-Providern verbunden, was den Vorteil mit sich bringt, dass ein Nutzer nur genau einmal seine Anmeldedaten an den Identity-Provider senden muss, und daraufhin bei mehreren Services automatisiert angemeldet wird. Dieses Prinzip kann sinnvoll sein, wenn z.B. in einer umfassenden Anwendung mehrere Dienste genutzt werden müssen (z.B. E-Mail, CRM, usw.), die allesamt eine separate Anmeldung benötigen.
In der Praxis erhält der Nutzer, bzw. sein Webbrowser, von dem SAML-System einen verschlüsselten Session-Cookie, mithilfe dessen der Nutzer auf die verschiedenen Dienste zugreifen kann. Diese Dienste, die an das SAML-System angebunden sind, können hierbei z.B. lokal auf den Servern eines Unternehmens betrieben werden oder sich im Internet befinden.
Insgesamt lässt sich das SAML-Framework somit für eine Vielzahl von möglichen Anwendungsfällen einsetzten und garantiert eine komfortable und gleichzeitig sichere Authentifizierungs- und Autorisierungs-Lösung.
Einrichtung und Konfiguration von SAML
Die Konfiguration eines SAML-Systems besteht aus mehreren Teilbereichen. Zum einen wird eingestellt, welche Daten die jeweiligen Service-Provider von einem Identity-Provider anfordern und in welchem Format diese vorliegen sollen. Diese „Integration-Rules“ definiert ein Service-Provider und die Regeln werden an den Identity-Provider weitergegeben, damit diese in seiner Konfiguration definiert sind.
In einem Beispiel könnte ein Service-Provider festlegen, dass bei den Anmeldedaten von dem angebundenen Identity-Provider, die User-ID die E-Mail-Adresse des Nutzers sein muss und diese einem festgelegten Format entsprechen muss.