Was sind die Unterschiede zwischen SAML und OIDC?
In diesem Artikel bieten wir einen Überblick über die SAML- und OIDC-Protokolle sowie deren typische Authentifizierungsflüsse. Wir vergleichen die wesentlichen Unterschiede, Vor- und Nachteile jedes Protokolls. Außerdem geben wir, basierend auf möglichen Benutzerszenarien, eine Anleitung zur Auswahl zwischen diesen beiden Protokollen.
OpenID Connect (OIDC) und Security Assertion Markup Language (SAML) sind Authentifizierungsprotokolle, die es Identitätsanbietern (IdPs) ermöglichen, die Benutzerauthentifizierung und Zugriffskontrolle zu implementieren. Jedes Protokoll definiert seinen eigenen Mechanismus zur Verwaltung der Identität authentifizierter Benutzer, die dann verwendet wird, um den Zugriff auf geschützte Anwendungen zu gewähren oder zu verweigern.
Was sind SAML und OIDC?
IdPs führen Datenbanken mit Benutzeridentitätsinformationen. Dienstanbieter (SPs) verlassen sich auf diese Informationen, um Benutzer zu authentifizieren, wobei manchmal eine einzige Authentifizierung über mehrere Anwendungen hinweg verwendet werden kann (Single Sign-On). OIDC und SAML sind Standards, die definieren, wie diese benutzeridentitätsbezogenen Informationen zwischen diesen beiden Parteien fließen. Ihr letztendliches Ziel ist dasselbe: die Benutzerauthentifizierung. Die grundlegenden Ansätze, die sie verfolgen, um dieses Ziel zu erreichen, unterscheiden sich jedoch.
SAML
SAML 2.0 ist seit 2005 die aktuelle Version des Standards. Es verwendet XML, um Identitätsinformationen, Anfragen und Antworten zu formatieren. XML ist ein ausgereifter Standard zur Formatierung von Dokumenten in einer Weise, die sowohl für Menschen als auch für Computer verständlich ist. Um XML-kodierte Informationen zu übertragen oder zu empfangen, verwendet es grundlegende SOAP- oder HTTP-Anfragen. Vom SAML-Protokoll definiert, ist der Dienst, der Identitätsinformationen anfordert, der Dienstanbieter (SP).
Bevor wir den typischen SAML-Authentifizierungsprozess vorstellen, müssen wir die Elemente verstehen, auf die sich die SAML-Authentifizierung stützt. Bevor sich IdP und SP gegenseitig erkennen und den Authentifizierungsprozess abschließen können, müssen sie die notwendigen Informationen „austauschen“, was in der Regel durch XML-formatierte Metadaten erreicht wird. Die ausgetauschten Informationen umfassen:
- Öffentliche Schlüssel, wobei IdP und SP ihre eigenen privaten und öffentlichen Schlüsselpaaren generieren und austauschen, um die Kommunikation zu signieren oder zu verschlüsseln. Mit den Fortschritten in der Netzwerksicherheit erfordert der Großteil der Szenarien jetzt nur die Signatur von Anfragen und lässt den Verschlüsselungsschritt weg.
- Endpunkte, die vom SP verwendet werden, um SAML-Authentifizierungsanfragen an den IdP zu senden und um SAML-Aussagen als Antwort auf Authentifizierungsanfragen vom IdP zu erhalten.
- Unterstützte XML-Attributformate, die es dem IdP ermöglichen, die erforderlichen Benutzerinformationen an den SP zu übermitteln, nachdem die Authentifizierung abgeschlossen ist.
Sobald IdP und SP über die oben genannten Informationen Bescheid wissen, können sie mit dem Autorisierungsprozess fortfahren (ein typischer vom SP initiierter Authentifizierungsablauf):
OIDC
OIDC ist ein zeitgemäßes Protokoll, das das OAuth-2.0-Framework erweitert. Es verwendet JSON-basierte Web-Tokens (JWT), um Daten-Payloads zu erstellen. JWTs, eine etablierte Industrienorm, legen Richtlinien für den sicheren Austausch und die Darstellung von Ansprüchen zwischen Entitäten fest. Diese Ansprüche, im Wesentlichen verschlüsselte Benutzerdaten, sind entscheidend für die Identitätsüberprüfung und -verwaltung. OIDC nutzt hauptsächlich den allgegenwärtigen HTTPS-Protokoll für die Datenübertragung.
Wie allgemein anerkannt, unterstützt das OIDC-Protokoll verschiedene Abläufe, einschließlich des Authorisierungscode-Ablaufs, des impliziten Ablaufs und des Hybridablaufs. Im folgenden Beispiel werden wir den sichersten und typischsten dieser Abläufe durchgehen: den Authorisierungscode-Ablauf. Dies ist auch der Ablauf, der von Logto verwendet wird.
Unterscheidende Aspekte von OIDC und SAML
- Angesichts seiner neueren Entwicklung ist OIDC besser für moderne Anwendungsauthentifizierung geeignet als der ältere SAML-Standard.
- Historisch gesehen geht SAML OIDC voraus und wurde in viele etablierte Unternehmenssysteme integriert.
- Im Gegensatz zu den umfangreicheren XML-Dokumenten von SAML sind die JWTs von OIDC kompakter und benutzerfreundlicher zu verarbeiten.
- Die Konfiguration von OIDC ist im Allgemeinen einfacher als SAML.
- Ein wesentliches Merkmal von OIDC ist die Definition von „Scopes“, die es IdPs ermöglicht, eine Vielzahl von Berechtigungen zu verwalten. Anwendungen können spezifische Berechtigungen von IdPs anfordern, die nach Benutzerzustimmung erteilt werden. Dieses Merkmal von OIDC bietet IdPs eine feinkörnige Kontrolle über Berechtigungen.
Wie sollte man zwischen OIDC und SAML wählen?
Sowohl OIDC als auch SAML sind robuste Authentifizierungssysteme, jedes mit seinen einzigartigen Stärken. Die Wahl hängt von den spezifischen Anforderungen deiner Organisation ab.
- Für eine schnelle und effiziente Implementierung von Identitätsplattformen ist OIDC SAML vorzuziehen. Die Implementierung von OIDC ist einfacher, da man die komplexe XML-Verarbeitung, die SAML für Metadatenanalyse, Authentifizierungsanfragebearbeitung und SAML-Aussagenanalyse erfordert, vermeidet.
- OIDC eignet sich ideal für Umgebungen mit umfangreichen API-Interaktionen und anspruchsvollen Berechtigungsmechanismen, da es anpassungsfähigere und effizientere Kontrollen über Berechtigungen und ein überlegenes Entwicklererlebnis bietet.
- Bei der Integration in etablierte Systeme, die SAML-basiert sind, sorgt die Wahl von SAML für eine reibungslosere Systemkompatibilität und reduziert den Aufwand zur Verbindung unterschiedlicher Protokolle.
Gibt es gute Lösungen auf dem Markt?
Logto, eine beliebte Identitätslösung bei Entwicklern, hat kürzlich die Unternehmens-SSO-Funktionalität eingeführt. Es bietet Unterstützung für beide Protokolle, SAML und OIDC, sowie sofort einsetzbare Integrationen für gängige IdPs wie Google Workspace und Microsoft Entra ID (vormals Azure AD). Mit Logto kannst du die Komplexität der eigenen SSO-Implementierung umgehen. Einige einfache Konfigurationsschritte ermöglichen SSO-Unterstützung in deinem Identitätssystem und erlauben es dir, das geeignete Protokoll auszuwählen, das deinen geschäftlichen Anforderungen entspricht.