Die richtige SSO-Technologie für deine Anwendung
Hast du dich als Entwickler schonmal mit der Implementierung von SSO in deiner Anwendung beschäftigt? Egal ob als Developer oder Anwender, von der Single-Sign-On-Authentifizierung (kurz: SSO) haben wir alle schonmal gehört. Ich möchte mich in diesem Artikel gezielt mit der Umsetzung auseinandersetzen. Entwickeln wir eine Anwendung, gehört die Art wie sich User authentifizieren können zu den essentiellen Aspekten und trägt in der Regel zur Software-Architektur bei, da eine nachträgliche Änderung sehr aufwändig sein kann.
Es gibt natürlich eine Vielzahl an Technologien, die als Basis zur SSO-Authentifizierung verwendet werden können. LDAP, OpenID, OAuth oder SAML sind hier die bekanntesten Vertreter – doch welche Technologie ist für welchen Anwendungsfall die richtige?
Die wichtigsten SSO-Protokolle im Überblick
Um die richtige Entscheidung treffen zu können, sollten wir zunächst verstehen, dass nicht alle genannten Technologien tatsächlich Alternativen zueinander sind:
LDAP (Lightweight Directory Access Protocol) ist, anders als oft angenommen, kein Authentifizierungsprotokoll für Webanwendungen, sondern ein Verzeichnisprotokoll. Es dient primär dazu, Benutzerinformationen in einer hierarchischen Struktur zu speichern und abzurufen. In SSO-Szenarien fungiert LDAP oft als Backend-Verzeichnis, gegen das andere Protokolle authentifizieren.
SAML (Security Assertion Markup Language) und OpenID Connect sind tatsächliche Alternativen für die Implementierung von SSO. Beide Protokolle wurden speziell für Authentifizierung und Single Sign-On entwickelt, lösen dieses Problem aber auf unterschiedliche Weise:
- SAML ist ein robustes, XML-basiertes Protokoll, das besonders in Enterprise-Umgebungen weit verbreitet ist
- OpenID Connect baut auf OAuth 2.0 auf und bietet eine modernere, JSON-basierte Lösung, die besonders für Web- und mobile Anwendungen geeignet ist
OAuth 2.0 ist hingegen primär ein Autorisierungsprotokoll, das den kontrollierten Zugriff auf Ressourcen regelt, nicht die Benutzerauthentifizierung selbst. Es wird jedoch häufig in Kombination mit OpenID Connect eingesetzt, um sowohl Authentifizierung als auch Autorisierung abzudecken.
OpenID Connect (OIDC) findet aktuell in immer mehr Anwendungen seinen Platz, auch in größeren Enterprise-Umgebungen. Es wird auch bereits von einigen großen Identity-Provider wie z.B. Microsoft, Google, Apple und GitHub verwendet.
Welche Technologie solltest du wählen?
Bei der Entscheidung für eine SSO-Technologie solltest du folgende Faktoren berücksichtigen:
- Zielgruppe deiner Anwendung:
- Für Unternehmensanwendungen, die sich in bestehende IT-Infrastrukturen integrieren müssen, ist SAML oft die bessere Wahl
- Für moderne Web- und Consumer-Apps ist OpenID Connect in der Regel einfacher zu implementieren
- Technische Anforderungen:
- SAML bietet umfassendere Sicherheitsfeatures, ist aber komplexer in der Implementierung
- OpenID Connect ist schlanker, einfacher zu implementieren und besser für mobile Anwendungen geeignet
- Bestehende Infrastruktur:
- Wenn du bereits LDAP für deine Benutzerverwaltung einsetzt, kannst du dieses mit SAML oder OpenID Connect als Frontend-Authentifizierungslösung kombinieren
- Zukunftssicherheit:
- OpenID Connect gewinnt zunehmend an Popularität und wird von vielen großen Identitätsanbietern unterstützt
- SAML ist etabliert und wird besonders in regulierten Umgebungen noch lange relevant bleiben
Die Wahl des richtigen Protokolls zu Beginn deines Projekts kann dir später viel Zeit und Ressourcen sparen. Eine falsche Entscheidung nachträglich zu korrigieren, bedeutet oft eine grundlegende Überarbeitung der Authentifizierungs- und Autorisierungslogik – ein Aufwand, den du durch eine sorgfältige Planung vermeiden kannst.
Die Wahl des Identitätsproviders
Diese Wahl ist unteranderem abhängig davon, welche Datenschutzrichtlinien du in deinem Projekt berücksichtigen muss. Im Cloud-Bereich sind hier Google und Microsoft sicherlich die am weit verbreitetsten. Wenn allerdings strenge Datenschutzmaßnahmen angewendet werden müssen, ist ggf. eine On-Premise Alternative heranzuziehen, ein Beispiel wäre an dieser Stelle Keycloak. Es bietet dir ein Benutzer / Gruppenverzeichnis, um Benutzer zu verwalten. Durch OpenID oder SAML kann in dem Fall die entsprechende Anwendung als sogenannter Client angebunden werden.