Begriff
Single Sign-On (SSO)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Früher: Für jedes Programm ein Passwort. Windows-Passwort, E-Mail-Passwort, SAP-Passwort, CRM-Passwort. Du schreibst sie auf Post-its (unsicher) oder nutzt immer "123456" (noch unsicherer). SSO: Ein Schlüssel für alle Türen. Du meldest dich einmal an (z. B. bei Google oder Microsoft). Dann bist du automatisch auch bei Slack, Zoom, Jira und Salesforce eingeloggt. Der IdP (Identity Provider) sagt den Apps: "Ich kenne den Typen, der ist okay."
Merksatz: Ein Authentifizierungsverfahren, das es einem Benutzer ermöglicht, mit einem einzigen Satz von Anmeldeinformationen auf mehrere unabhängige Anwendungen oder Systeme zuzugreifen.
- Consumer: "Login with Google". Du musst dir kein neues Passwort für das Forum ausdenken.
- Enterprise: Okta, Active Directory (Azure AD). Der Admin kann mit einem Klick einen Mitarbeiter sperren -> Zugriff auf alle 50 Apps weg. (Sicherheitsgewinn).
1. Protokolle (SAML vs OIDC)
- SAML (Security Assertion Markup Language): XML-basiert. Der alte Enterprise-Standard (seit 2005). Mächtig, aber komplex und verbos.
- OIDC (OpenID Connect): JSON-basiert (auf OAuth 2.0). Modern, Mobile-freundlich. "Login with Google" ist OIDC. ID-Token (JWT) enthält User-Infos.
2. Der Anmelde-Flow (SP-Initiated)
- User geht zu Slack (Service Provider, SP).
- Slack sieht "Nicht eingeloggt". Leitet User zu Okta (Identity Provider, IdP).
- User loggt sich bei Okta ein.
- Okta schickt User zurück zu Slack mit einem "Ticket" (Token/Assertion).
- Slack prüft Ticket (Signatur). Loggt User ein.
SAML (Der XML Trust-Dance)
Security Assertion Markup Language (SAML 2.0) basiert auf kryptografisch bewiesenen XML-Dokumenten (Assertions).
Der kritischste Punkt: Wie weiß Slack (SP), dass das empfangene XML von Okta (IdP) kommt und nicht von einem Angreifer unterschoben wurde?
Der Identity Provider signiert den <Assertion>-Block asymmetrisch per X.509 RSA Private Key. Slack hält den Public Key von Okta (wird beim Initial-Setup des SSO via Metadata-XML ausgetauscht). Slack validiert die Signatur.
Ein katastrophaler, klassischer Bug in SP-Libraries war "XML Signature Wrapping" (XSW). Der Parser validierte die Signatur im originalen Element, extrahierte aber die User-ID für den Login-Context aus einem vom Hacker injizierten, un-signierten Kopie-Element tief unten im XML-Baum. So loggte man sich als Admin in Fremd-Accounts ein.
OIDC vs. OAuth 2.0 (Identity vs. Authority)
Entwickler verwechseln das ständig:
OAuth 2.0 ist kein Authentifizierungs-Protokoll! Es ist reine Autorisierung (Delegation). Es sagt: "App X darf Namen im Namen von User Y auslesen." (Access Token). Das Access Token ist oft opak (eine reine ID-Wurst) und bringt keine User-Identität mit sich.
OpenID Connect (OIDC) legt eine dünne Identitäts-Ebene über OAuth 2.0.
OIDC verlangt den Scope openid. Das Resultat: Die App erhält zusätzlich ein ID-Token im JWT-Format (JSON Web Token). Wenn das Frontend dieses JWT decodiert, sieht es sofort: {"name": "Max", "email": "[email protected]"}. OIDC standardisiert SSO für moderne REST-Apps endgültig.
IdP MFA-Bypass (Das Sessions-Limit)
Ein tückisches Architektur-Risiko bei SSO: User loggt sich bei Azure AD (IdP) ein, Azure verlangt streng den Hardware-Token (MFA/Yubikey) – perfekt. Er erhält SSO-Zugang zur Cloud-App. Nun klaut ein Hacker den Session Cookie der Cloud-App (die den User bereits als validiert ansieht). Der Hacker surft mit der Cookie-Session, die App lässt ihn ein. Die MFA beim IdP nutzt dem Unternehmen hier exakt gar nichts, da der IdP nach dem Initial-Prozess (Token Handover) im laufenden Traffic völlig blind ist! Lösungen: Continuous Access Evaluation (CAE). Die Cloud-App pollt im Hintergrund den IdP ("Ist der Status des Users noch safe? Hat sich seine IP ins Ausland verlagert?"), um im Zweifel den SP-Session-Cookie sofort brutal terminieren zu können und eine Re-Authentication zu forcieren.
Quick-Check
Single Point of Failure?
Ja. Wenn Okta down ist, kommt keiner mehr in irgendeine App. Und wenn dein Okta-Passwort geklaut wird, ist alles weg (deshalb MFA Pflicht!).Kerberos?
Das Ur-SSO (1980er) für interne Netzwerke (Windows Domain). SAML/OIDC sind die "Web-Versionen" davon.Logout?
Schwierig. "Single Log-Out" (SLO) funktioniert oft schlecht. Wenn ich mich bei Okta auslogge, bin ich in Slack oft noch drin (bis das Coookie abläuft).