- Einführung in IAM
- OpenID Connect und SAML im Vergleich: Welches Protokoll für moderne Apps?
OpenID Connect und SAML im Vergleich: Welches Protokoll für moderne Apps?
SAML und OpenID Connect bieten beide Single Sign-On (SSO), wurden aber für unterschiedliche Architekturen entwickelt. Die Wahl des falschen Authentifizierungsprotokolls führt zu komplexem XML-Parsing, Problemen bei der Zertifikatsrotation oder Lücken bei Mobilgeräte-Apps.
SAML 2.0 (OASIS-Standard, 2005) wurde für den XML-basierten Identitätsverbund in Unternehmen entwickelt. Typische Beispiele sind klassische Web-Apps, die eine Verbindung zu unternehmenseigenen Identity-Anbietern (IdP) herstellen. OpenID Connect (OpenID Foundation, 2014) erweitert OAuth 2.0 mit einer ressourcenschonenden JSON-Authentifizierungsebene, die für APIs, Mobilgeräte-Apps und moderne Webarchitekturen optimiert ist. Die Wahl hängt von Ihrer Zielplattform und Ihrem Identity-Stack ab.
Beispiel: Ihr Unternehmen hat ein Startup übernommen. Die React-App des Startups muss sowohl die Authentifizierung von Verbrauchenden bei Google (OIDC) als auch die Authentifizierung Ihrer Unternehmensmitarbeitenden über den unternehmenseigenen Identity-Anbieter (SAML) unterstützen. Ein Identity-Anbieter verarbeitet beide Protokolle, sodass Ihre React-App einen einzigen Integrationspunkt verwaltet, ohne dass separate OIDC- und SAML-Flows implementiert werden müssen.
Die technischen Unterschiede
| Aspekt | SAML 2.0 | OpenID Connect (OIDC) |
|---|---|---|
| Primärer Fokus | Enterprise Federation | Moderne Authentifizierung mit OAuth 2.0 |
| Datenformat | XML-Assertions mit digitalen Signaturen | JSON Web Token (JWTs) für ID-Token |
| Grundlage | XML-basiertes Authentifizierungs- und Verbundprotokoll | Authentifizierungs-Ebene, die auf OAuth 2.0 aufbaut |
| Übertragung | Hauptsächlich HTTP-POST und HTTP-Redirect-Bindungen (Browser-SSO-Profil) | HTTPS mit Front-Channel-Weiterleitungen und direkten Token/UserInfo-Endpoint-Aufrufen |
| Einrichtung | Austausch von XML-Metadaten, Verwaltung von Zertifikaten | Client-Registrierung über Erkennungsdokumente (.well-known/openid-configuration) |
| Token-Format | Signiertes (und optional verschlüsseltes) XML | JWTs für ID-Token; Access Token sind implementierungsspezifisch (OAuth 2.0/OIDC schreibt zwar keine JWT Access Token vor, sie werden jedoch immer häufiger verwendet) |
| Am besten geeignet für | Umgebungen mit Legacy-Anforderungen für behördliche oder branchenspezifische Föderation | SPAs, Mobilgeräte-Apps, Microservices, Social Login |
| Integrationskomplexität | Höher: XML-Parsing, Metadatenverwaltung, Zertifikatsrotation | Im Allgemeinen niedriger: JSON-Parsing, einfache HTTP-Aufrufe, abrufbare Konfiguration |
Wesentliche Unterschiede: SAML-Assertions können umfangreiche Attributhierarchien für komplexe Unternehmensanforderungen enthalten. OIDC verwendet Berechtigungsbereiche (openid, profile, E-Mail-Adresse), um bestimmte Claims im ID-Token und optional über den UserInfo-Endpoint anzufordern.
SAML wird unabhängig von OAuth 2.0 ausgeführt. OIDC schichtet die Authentifizierung auf die OAuth 2.0-Autorisierungs-Flows und ermöglicht so einen einheitlichen Protokoll-Stack sowohl für die Authentifizierung als auch für die Autorisierung.
Grundlegendes zu Authentifizierungsabläufen
SAML (vom Service Provider initiierter Flow): Ihr Service Provider leitet Benutzende mit einem AuthnRequest an den IdP weiter. Dieser authentifiziert sie, generiert eine signierte Assertion mit Benutzerattributen und sendet sie an den Assertion Consumer Service (ACS) des Service Providers per HTTP-POST zurück. Anschließend validieren Sie die Signatur- und Assertion-Bedingungen und gewähren dann Zugriff. Dieser Flow umfasst in der Regel mehrere Browser-Weiterleitungen und aufwändige XML-Verarbeitung.
OIDC (Autorisierungscode-Flow mit PKCE): Ihre App leitet Benutzende mit den erforderlichen Berechtigungsbereichen und einer PKCE-Codeabfrage zum Autorisierungs-Endpoint des Identity-Anbieters weiter. Nach der Authentifizierung und Zustimmung gibt der IdP einen Autorisierungscode zurück. Tauschen Sie diesen Code (zusammen mit dem PKCE-Verifier) gegen ein ID-Token und ein Access Token ein und Sie erhalten je nach Client-Typ und IdP-Richtlinie möglicherweise ein Refresh Token. Validieren Sie die JWT-Signatur, überprüfen Sie die Claims (iss, aud, exp) und Sie sind fertig. Dieser Flow ist aufgrund der nativen JSON/JWT-Unterstützung auf modernen Plattformen in der Regel einfacher zu implementieren.
Auswahl Ihres Protokolls
Passen Sie Ihre Architektur an das passende Protokoll an:
Wählen Sie SAML in folgenden Situationen:
- Integration mit bestehenden unternehmenseigenen Identity-Anbietern
- Lösungen für staatliche oder regulierte Branchen erfordern eine FISMA-, FedRAMP- oder Legacy-SAML-basierte Föderation
- Systeme, die bereits SAML unterstützen und bei denen die Wechselkosten den Nutzen übersteigen
- Komplexe Anforderungen an Benutzerattribute (verschachtelte Organisationshierarchien, individuelle Claims)
Wählen Sie OIDC in folgenden Situationen:
- Erstellung von Single-Page-Anwendungen (React, Vue, Angular) oder Mobilgeräte-Apps (iOS, Android)
- Implementierung von Social Login-Anbietern (Google, GitHub, Apple)
- Erstellung von API-First-Architekturen oder Microservices, die OAuth 2.0-Access Token benötigen
- Neuimplementierung ohne Legacy-Beschränkungen, bei dem die unkompliziertere OIDC-Einrichtung eine schnellere Produktivität ermöglicht
- Priorisierung der Entwickler-Experience mit besseren Bibliotheken und Dokumentationen
Was ist, wenn Sie beide benötigen? Identity-Anbieter können die Protokollvermittlung übernehmen. Die Anwendung verwendet OIDC, kann aber eine Verbindung zu SAML-basierten unternehmenseigenen IdPs herstellen. Dadurch müssen Sie nicht zwei Protokollimplementierungen verwalten.
Grundlagen der Implementierung
Token-Validierung
- Für OIDC: Überprüfen Sie die JWT-Signaturen mit dem vom Identity-Anbieter veröffentlichten JSON Web Key Set (JWKS), prüfen Sie das Ablaufdatum (
exp), validieren Sie, ob die Zielgruppe (aud)mit Ihrer Client-ID übereinstimmt, und bestätigen Sie, dass der Aussteller (iss) mit Ihrem Identity-Anbieter übereinstimmt. - Für SAML: Verifizieren Sie die XML-Signaturen, überprüfen Sie die Ablaufbedingungen (
NotBefore,NotOnOrAfter) und validieren Sie die Zielgruppenbeschränkungen.
Client-Konfiguration
Binden Sie niemals Client-Secrets in Single-Page-Anwendungen (SPAs) oder mobile Apps ein, da sie in den Entwicklertools des Browsers und in den Binärdateien der App sichtbar sind. Verwenden Sie Proof Key for Code Exchange (PKCE) für den Autorisierungscode-Flow. PKCE schützt vor dem Abfangen von Autorisierungscodes, ohne dass ein Secret erforderlich ist, welches für öffentliche Clients obligatorisch ist (RFC 7636).
Session-Verwaltung
OIDC übernimmt die Unterstützung von Refresh Token aus OAuth 2.0 für langlebige Sessions. Tauschen Sie das Refresh Token gegen neue Access Token aus, wenn diese ablaufen. Dies setzt voraus, dass Ihr Identity-Anbieter Refresh Token ausstellt und die Client-Konfiguration dies zulässt. SAML stützt sich auf von Identity-Anbieter und Service Provider verwaltete Sessions statt auf einen standardisierten Aktualisierungsmechanismus und unterstützt optionales Single-Logout (SLO). Die Implementierung von SLO unterscheidet sich je nach Identity-Anbieter und die Standardisierung kann schwierig sein.
Umgang mit Fehlern
Protokollieren Sie zur Fehlersuche die Authentifizierungsfehler mit Kontext (Zeitstempel, Fehlercodes, Client-IDs, Identity-Anbieter-Antworten). Zeigen Sie den Benutzenden allgemeine „Authentifizierung fehlgeschlagen“-Meldungen an. Vermeiden Sie die Offenlegung von Token-Details, Claim-Diskrepanzen oder Signaturfehlern, die Angreifenden helfen könnten.
Häufig gestellte Fragen
Wird SAML durch OpenID Connect ersetzt?
Nein, beide existieren nebeneinander. Die OIDC-Nutzung nimmt bei Consumer-Apps und Mobilanwendungen aufgrund der OAuth 2.0-Basis rasant zu. SAML bleibt aufgrund von Infrastrukturinvestitionen und Compliance-Anforderungen (FISMA, FedRAMP) jedoch der Standard im Unternehmens- und Behördensektor. Die meisten Unternehmen verwenden beide Protokolle: OIDC für neue Anwendungen, SAML für Enterprise Federation.
Welches Protokoll ist sicherer?
Beide bieten bei ordnungsgemäßer Implementierung ein hohes Maß an Sicherheit. SAML verwendet XML-Signaturen und optionale Verschlüsselung, OIDC dagegen JWT-Signaturen und HTTPS. Der entscheidende Unterschied: Die PKCE-Erweiterung von OIDC (RFC 7636) sichert öffentliche Clients wie Mobilgeräte-Apps und SPAs ab, bei denen Client-Secrets nicht geschützt werden können. SAML kann ähnliche Schutzmaßnahmen durch Artefaktbindung oder Holder-of-Key-Assertions erreichen, aber diese Muster sind in der modernen Anwendungsentwicklung weniger verbreitet. Die Sicherheit hängt von der Implementierung ab, nicht vom gewählten Protokoll.
Warum wird bei Mobilgeräte-Apps OIDC gegenüber SAML bevorzugt?
Der Autorisierungscode-Ablauf von OIDC mit PKCE wurde für öffentliche Clients wie Mobilgeräte-Apps entwickelt, die Client-Secrets nicht sicher speichern können. Die JSON-Token von OIDC lassen sich nativ in mobile SDKs integrieren, während SAML XML-Verarbeitungsbibliotheken benötigt. OIDC unterstützt benutzerdefinierte URI-Schemas (iOS) und App Links (Android) für nahtlose Authentifizierung. Große Anbieter unterstützen hauptsächlich OIDC-basierte Flows für die mobile Authentifizierung.
Was ist der beste Migrationspfad von SAML zu OIDC?
Die schrittweise Migration. Implementieren Sie OIDC für neue Anwendungen unter Beibehaltung vorhandener SAML-Integrationen. Verwenden Sie eine Identity-Plattform, die Protokollvermittlung unterstützt, sodass Ihre Anwendungen OIDC nutzen, während sie sich mit SAML-basierten unternehmenseigenen IdPs verbinden. Dadurch werden Risiken minimiert, ohne bestehende Föderationsbeziehungen zu stören. Viele Unternehmen nutzen während Übergangsphasen hybride Arbeitsumgebungen. Verwenden Sie eine Identity-Plattform, die die Protokollvermittlung abwickelt, sodass Anwendungen OIDC verwenden können, während die Plattform den SAML-Verbund verwaltet.
Was ist der Unterschied zwischen OAuth 2.0 und OIDC?
OAuth 2.0 wickelt die Autorisierung (Zugriff auf APIs) über Access Token ab. OIDC fügt Authentifizierung (Überprüfung der Benutzeridentität) durch ID-Token hinzu, die auf OAuth 2.0 basieren. Wenn Sie „Anmeldung mit Google“ implementieren, verwenden Sie OIDC für die Authentifizierung plus OAuth 2.0 für den API-Zugriff. OIDC erweitert OAuth 2.0 mit standardisierten Identity-Claims und dem UserInfo-Endpoint.
Implementieren eines der beiden Protokolle ohne die Komplexität
Die Wahl zwischen SAML und OIDC ist für die Absicherung Ihrer Authentifizierungsarchitektur unerlässlich. Beide Protokolle erfordern eine sorgfältige Implementierung, einschließlich ordnungsgemäßer Token-Validierung, Zertifikatsverwaltung und Session-Kontrolle. Die Implementierung und Verwaltung beider Protokolle ist ein komplexer Prozess.
Auth0 unterstützt sowohl SAML als auch OIDC und übernimmt Protokollvermittlung sowie bewährte Sicherheitsmethoden, sodass sich Entwicklungsteams auf die Anwendungsfunktionen konzentrieren können.
In unserer Reihe „Einführung in IAM“ finden Sie weitere Informationen zu Identity and Access Management (IAM).
Diese Materialien dienen nur zur allgemeinen Information. Es liegt in Ihrer Verantwortung, sich mit Blick auf Sicherheit, Datenschutz, Compliance oder geschäftliche Angelegenheiten beraten zu lassen und sich nicht ausschließlich auf die hierin bereitgestellten Informationen zu verlassen.
Table of contents
- Die technischen Unterschiede
- Grundlegendes zu Authentifizierungsabläufen
- Auswahl Ihres Protokolls
- Grundlagen der Implementierung
- Häufig gestellte Fragen
- Implementieren eines der beiden Protokolle ohne die Komplexität
Fordern Sie Ihren persönlichen OpenID-Leitfaden an
Fordern Sie Ihren persönlichen SSO-Leitfaden an und erfahren Sie, wie Auth0 Ihnen helfen kann
Mehr lesenQuick assessment
Welches Protokoll ist ausgereifter?
Quick assessment
Welches Protokoll eignet sich besser für mobile Apps?
Quick assessment
Welches Protokoll ist am besten für Authentifizierungs- und Autorisierungs-Apps im Bankwesen geeignet?