Ein Entwicklerleitfaden zur SAML-Authentifizierung [3 Online Tools]

In der heutigen Zeit ist eine unkomplizierte Passwortverwaltung von großer Bedeutung. Angesichts der fortschreitenden Digitalisierung in Unternehmen nutzen Beschäftigte mehr als je zuvor Kollaborations-, Messaging- und Speichertools.

Dies stellt Entwickler vor die Herausforderung, wie man Mitarbeitern einen sicheren Zugang zu internen Anwendungen und Daten in der Cloud ermöglicht. Eine gängige Lösung ist die SAML-Authentifizierung.

Was verbirgt sich hinter SAML?

Die Security Assertion Markup Language (SAML) ist ein offener Standard, der Authentifizierungsprozesse vereinfacht. Sie basiert auf XML (Extensible Markup Language), welches die Kommunikation zwischen zu authentifizierenden Instanzen und dem Webdienst oder der Anwendung standardisiert. SAML ermöglicht es, sich mit einem einzigen Login bei verschiedenen Anwendungen anzumelden.

Ein Dienstanbieter benötigt eine Authentifizierung durch einen Identity Provider (IdP), um dem Nutzer die Autorisierung zu gewähren. Beispielsweise ist Salesforce ein Dienstanbieter, der für die Nutzerauthentifizierung auf einen Identitätsanbieter angewiesen ist.

Auf der anderen Seite authentifiziert ein Identitätsanbieter den Endbenutzer und sendet diese Daten zusammen mit den Zugriffsberechtigungen an den Dienstanbieter. Ein prominentes Beispiel ist Auth0, ein führender Anbieter von Identitätslösungen.

Was bedeutet SAML Single Sign-On?

Eine Hauptfunktion von SAML ist die Realisierung von Single Sign-On (SSO). Vor SAML war SSO zwar möglich, jedoch abhängig von Cookies und auf dieselbe Domain beschränkt.

SAML ermöglicht SSO, indem Benutzer mit einer einzigen Anmeldung und einem Satz von Anmeldeinformationen Zugriff auf mehrere Anwendungen erhalten. SAML existiert seit 2002 und wird von vielen neuen Anwendungen und SaaS-Unternehmen für SSO genutzt. Die aktuelle Version, SAML 2.0, ermöglicht webbasiertes, domänenübergreifendes SSO und dient als Standard für die Ressourcenautorisierung.

Welche Vorteile bietet die SAML-Authentifizierung?

SAML bietet zahlreiche Vorteile in Bezug auf Sicherheit, Benutzerfreundlichkeit und für Dienstanbieter (SPs).

Einfachheit: Benutzer melden sich nur einmal beim IdP an und genießen anschließend einen sicheren und nahtlosen Zugriff auf alle Anwendungen.

Erhöhte Sicherheit: Viele SPs verfügen nicht über die notwendigen Ressourcen, um eine sichere Benutzerauthentifizierung zu implementieren. IdPs sind in der Regel besser auf die Authentifizierung von Benutzeridentitäten vorbereitet. Durch die Verlagerung der Authentifizierung an den IdP ermöglicht SAML eine sichere Authentifizierung mit mehreren Sicherheitsebenen, wie z.B. MFA.

Verbesserte Benutzererfahrung: Mit SAML müssen Benutzer nicht mehr mit der Problematik mehrerer Benutzernamen und Passwörter umgehen.

Reduzierter Verwaltungsaufwand: Dienstanbieter können ihre Plattform verbessern, ohne Passwörter zu speichern. Sie müssen sich auch nicht mit vergessenen Passwörtern beschäftigen. Der Helpdesk wird entlastet, was Kosten reduziert und es technischen Teams ermöglicht, sich um dringende Anfragen zu kümmern.

Was ist Auth0 und welche Rolle spielt es bei der SAML-Authentifizierung?

Auth0 ist eine Plattform, die Dienste für die Benutzerauthentifizierung und Autorisierung bereitstellt. Sie kann sowohl als IdP als auch als SP fungieren. Auth0 bietet ein universelles Login, das mit SAML integriert werden kann. Entwickler nutzen Auth0 häufig in Verbindung mit SAML, um Risiken zu verteilen, indem sie mehrere IdPs verwenden.

Auth0 ist mit nahezu allen wichtigen Sprachen und APIs kompatibel und kann in soziale Anbieter, Datenbanken und LDAP-Verzeichnisse integriert werden.

Der Ablauf von SAML-SSO

Wie bereits erwähnt, ist eine der Hauptaufgaben von SAML die Aktivierung von Single Sign-On (SSO). Bevor es SAML gab, war SSO möglich, jedoch abhängig von Cookies und nur innerhalb derselben Domain realisierbar.

SAML ermöglicht SSO, indem Benutzern mit einem einzigen Login Zugriff auf mehrere Anwendungen ermöglicht wird. SAML existiert seit 2002 und viele neue Anwendungen und SaaS-Unternehmen nutzen SAML für SSO. Die neueste Version, SAML 2.0, ist der Standard für die Ressourcenautorisierung und ermöglicht webbasiertes, domänenübergreifendes SSO.

Konkret bedeutet dies, dass der Nutzer bei der Nutzung unterschiedlicher Anwendungen nur einmal zur Authentifizierung aufgefordert wird. Man kann zum Beispiel an die Google-Authentifizierung denken, die von verschiedenen Diensten wie Gmail, YouTube und Google Apps genutzt wird.

In diesem Szenario ist Google der Identitätsanbieter (IdP) für seine Dienste. Diese Dienste werden als „Dienstanbieter“ (SP) bezeichnet.

Authentifizierung

Bei der Verbindung mit einer externen Anwendung wird der unbekannte Benutzer an den IdP des Unternehmens weitergeleitet. Dieser IdP ist ein Webdienst, der über HTTPS zugänglich ist und intern oder extern gehostet werden kann.

Interne Authentifizierung

Der Benutzer muss dann seine Identität gegenüber dem IdP nachweisen. Dies kann durch eine explizite Authentifizierung (Login/Passwort) oder durch die Übergabe eines bereits vorhandenen Tokens erfolgen.

Generierung der Assertion

Der IdP generiert dann einen „Token“, eine Art Benutzerausweis, der nur für den angeforderten Dienst und für eine bestimmte Zeit gültig ist. In diesem Token finden sich insbesondere:

  • Die Identität des Benutzers: Login, E-Mail oder andere Felder
  • Optionale Zusatzattribute: Nachname, Vorname, Sprache usw.
  • Die Gültigkeitsdauer des Tokens
  • Eine Signatur des Tokens durch den IdP

Übertragung vom IdP zum SP

In der Praxis wird die Assertion nicht direkt vom IdP an den SP übertragen, sondern über den Benutzer selbst. Der IdP stellt dem Client-Browser das Token über einen HTTP-Bounce-Mechanismus zur Übertragung an den Dienstanbieter bereit. Dies kann man mit einem Personalausweis vergleichen, den man jeder Behörde vorlegen muss.

Verbrauch des Tokens durch den SP

Der Dienstanbieter erhält das Token vom Benutzer. Der SP vertraut dem IdP. Er validiert die Signatur, die Integrität des Tokens und die Gültigkeitsdauer. Wenn die Prüfungen erfolgreich sind, öffnet der SP eine Sitzung für den Benutzer.

Quelle: Wikipedia

SAML-Authentifizierung vs. Benutzerberechtigung

Oftmals wird SAML-Authentifizierung mit Autorisierung verwechselt. Um es zu verdeutlichen, ist es wichtig, die Konzepte Authentifizierung und Autorisierung voneinander zu unterscheiden.

Authentifizierung: Sie dient der Überprüfung der Identität eines Benutzers. Es wird im Grunde bestätigt, ob die Person wirklich diejenige ist, die sie vorgibt zu sein. Ein Beispiel hierfür ist die Verwendung von E-Mail und Passwort für den Zugriff auf ein System – eine einzelne Sitzung oder ein Login für andere Plattformen.

Autorisierung: Dies sind die Berechtigungen, die der Benutzer einem Drittanbieter-Tool gewährt, um auf Ressourcen in seinem Konto zuzugreifen. Mit Zustimmung des Benutzers tauscht das Autorisierungsprotokoll Token aus, ohne auf seine Anmeldeinformationen zuzugreifen. Dies geschieht üblicherweise, wenn man einer Plattform (wie Facebook) erlaubt, auf bestimmte Informationen aus dem Google-Konto zuzugreifen.

Wichtige Begriffe im Zusammenhang mit SAML

SAML-Assertion

SAML-Assertions werden in der Regel von Identitätsanbietern an Dienstanbieter weitergegeben. Diese Assertions beinhalten Aussagen, die Dienstanbieter verwenden, um Entscheidungen zur Zugriffskontrolle zu treffen. Es gibt drei Arten von Deklarationen:

  • Authentifizierungsaussagen bestätigen, dass der Dienstanbieter zu einem bestimmten Zeitpunkt erfolgreich durch ein Authentifizierungsverfahren beim Identitätsanbieter authentifiziert wurde.
  • Eine Attributdeklaration bestätigt, dass einem Subjekt bestimmte Attribute zugeordnet sind. Ein Attribut ist ein Name-Wert-Paar. Vertrauende Parteien verwenden Attribute, um Entscheidungen zur Zugriffskontrolle zu treffen.
  • Eine autorisierte Entscheidungserklärung bestätigt, dass einem Subjekt erlaubt ist, auf eine Ressource zuzugreifen, indem es einen Beweis dafür vorlegt. Die Aussagekraft von Autorisierungsentscheidungszuständen in SAML ist bewusst eingeschränkt.

Assertion Consumer Service

Der Assertion Consumer Service (ACS) ist der Endpunkt, an den der Identitätsanbieter nach der Benutzerauthentifizierung umleitet. Der Endpunkt, an den der Identitätsanbieter umleitet, ist ein HTTPS-Endpunkt, der personenbezogene Daten übermittelt.

Standard-Relay-Status

Dies ist die Standard-URL, zu der ein Benutzer umgeleitet wird, nachdem eine SAML-Nachricht authentifiziert wurde. Der Standard-Relay-Status wird verwendet, um Nachrichten zwischen IdPs und SPs zu koordinieren.

SAML ist ein weit verbreitetes Protokoll, und oft müssen SAML-Assertions entschlüsselt werden. Hier sind einige hilfreiche SAML-Tools zum Kodieren, Dekodieren und Formatieren von SAML-Nachrichten und -Assertions:

#1. SAMLtool

SAMLtool von OneDesign ist eine Sammlung von Online-SAML-Tools und -Toolkits. Es umfasst Werkzeuge zum Kodieren und Dekodieren von SAML-Nachrichten, zum Verschlüsseln und Entschlüsseln von Assertions sowie zum Signieren und Validieren von SAML-Nachrichten und -Assertions. SAMLtool bietet auch Plugins zur Integration dieser Tools in verschiedene CMS.

#2. Samtool.io

samltool.io von Auth0 ist ein Online-Tool, mit dem Sie SAML-Nachrichten und -Assertions dekodieren, untersuchen und verifizieren können, indem Sie einfach rohes XML oder URLs mit Anfragen einfügen.

#3. SAM-Decoder

SAM-Decoder ist ein einfaches Online-Tool zum Dekodieren von SAML, das von PingIdentity angeboten wird. Mit dem SAM-Decoder können SAML-Nachrichten, -Assertions und Metadaten dekodiert, aufgebläht und formatiert werden.

Abschließende Gedanken

Der SAML-Standard ist sehr nützlich für die Implementierung einer zentralen Authentifizierungsstelle auf Basis der Auszeichnungssprache. Einer der Hauptvorteile ist die hohe Effizienz und der hohe Sicherheitsstandard.

Die Anzahl möglicher Sicherheitslücken wird reduziert, da einzelne Anwendungen keine Benutzerdaten speichern oder synchronisieren müssen. Dadurch wird das Ziel erreicht, ein hohes Maß an Sicherheit mit einem Maximum an Bedienkomfort zu verbinden.

Sie können sich auch einige der besten Benutzerauthentifizierungsplattformen ansehen.