Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Authentifizierung Glossar

SSO - Single Sign-On

Single Sign-On (SSO) ermöglicht Benutzern sich einmalig zu authentifizieren und danach ohne erneute Anmeldung auf mehrere Anwendungen und Services zuzugreifen. SSO basiert auf Protokollen wie SAML 2.0, OIDC/OAuth 2.0 und Kerberos. Aus Security-Sicht ist SSO zweischneidig: reduziert Passwort-Schwachstellen, aber ein kompromittierter SSO-Provider gibt Zugang zu allen verbundenen Services. Identity Provider (IdP): Azure AD/Entra ID, Okta, Ping Identity, Google Workspace.

Single Sign-On ist der Standard in modernen Unternehmensumgebungen - und ein privilegiertes Angriffsziel. Wer den Identity Provider kompromittiert, hat potenziell Zugang zu allen verbundenen Anwendungen ohne je ein einzelnes Passwort zu kennen. SSO-Sicherheit ist deshalb nicht nur eine Komfortfrage, sondern eine der wichtigsten Sicherheitsentscheidungen im IAM-Portfolio.

SSO Technologien

SAML 2.0 (Security Assertion Markup Language)

  • Einsatz: Enterprise Web-SSO (Legacy + Modern)
  • Format: XML-basierte Assertions
  • Flow: SP-initiated oder IdP-initiated
  • Stärken: Weit verbreitet, alle Enterprise-Apps unterstützen es
  • Schwächen: Komplex, XML-Security-Probleme (XXE, XSW-Angriffe!)

OIDC (OpenID Connect) / OAuth 2.0

  • Einsatz: Moderne Apps, APIs, Mobile, Cloud-native
  • Format: JWT-basierte ID-Tokens
  • Flow: Authorization Code + PKCE
  • Stärken: Einfacher, JSON-basiert, Cloud-native
  • Schwächen: Komplexe Token-Validierung, viele Implementierungsfehler

Kerberos

  • Einsatz: Windows Active Directory (on-premise)
  • Format: Ticket-basiert (TGT + Service Tickets)
  • Stärken: Tiefe Windows-Integration, transparent für User
  • Schwächen: AD-only, komplex, viele Angriffsvektoren (Golden Ticket!)

LDAP-SSO

  • Einsatz: Interne Linux-Dienste (mit OpenLDAP, AD LDAP)
  • Format: Directory-Protokoll
  • Verwendung: Apache Webserver, Confluence, Jira (LDAP-Auth)

RADIUS

  • Einsatz: VPN-Authentifizierung, WLAN-Enterprise (802.1X)
  • Format: UDP-basiertes Authentifizierungsprotokoll

Passwortloser SSO (modern)

  • FIDO2/WebAuthn: Hardware-Keys (YubiKey) als SSO
  • Passkeys: Device-bound Private Keys (kein Phishing möglich!)
  • Kombination: Passkey → OIDC-Token → App-SSO

Identity Provider Vergleich

Microsoft Entra ID (ehemals Azure AD)

  • Marktanteil: ~50% Enterprise (durch M365-Dominanz)
  • Stärken:
    • M365-native Integration (Teams, SharePoint, Exchange)
    • Conditional Access: granulare Zugriffsregeln
    • Privileged Identity Management (PIM): Just-in-Time Admin
    • Microsoft Authenticator: phishing-resistente MFA
    • SSPR (Self Service Password Reset) mit Multi-Method-Auth
  • Kosten:
    • Azure AD Free: Basis-SSO (inkl. M365)
    • Entra ID P1: €6/User/Monat (Conditional Access, SSO für alle Apps)
    • Entra ID P2: €9/User/Monat (PIM, Identity Protection)

Okta

  • Marktanteil: Führend außerhalb Microsoft-Ökosystem
  • Stärken:
    • Universal Directory: beliebige Benutzerquellen konsolidieren
    • App-Integration: 7.000+ vorkonfigurierte App-Verbindungen
    • Adaptive MFA: Risiko-basierte Auth-Entscheidungen
    • Workflows: No-Code Identity-Automation
    • Lifecycle Management (IGA-Funktionalität)
  • Kosten: Workforce Identity: ab $2/User/Monat (SSO) bis $15+ (Advanced)
  • Bekanntes Problem: Okta selbst wurde 2022/2023 kompromittiert!

Google Workspace (Cloud Identity)

  • Stärken:
    • Nahtlose Google-App-Integration
    • Context-Aware Access: Device-Trust + Location
    • FIDO2-Keys: Hardware-Key-Unterstützung by default
  • Geeignet: Google-Workspace-Unternehmen

Ping Identity

  • Stärken: Hybride Umgebungen (on-premise + cloud)
  • Besonders: PingFederate (on-premise SAML/OIDC IdP)
  • Geeignet: Regulierte Branchen, On-Premise-Anforderungen

Keycloak (Open Source)

  • Kosten: Kostenlos (Red Hat SSO = Enterprise-Variante)
  • Deployment: Self-hosted (Docker/Kubernetes)
  • Stärken: FOSS, vollständig, SAML+OIDC, Social Login
  • Stärke für KRITIS/Gesundheit: Daten bleiben on-premise
  • Einsatz bei AWARE7: Docmanager-Plattform, reveal-editor

SSO-Sicherheitsrisiken

1. Single Point of Failure / Blast Radius

  • IdP kompromittiert = alle Apps kompromittiert!
  • Sicherheitsstrategie: IdP ist das wichtigste zu schützende System

Risikominderung:

  • IdP selbst mit starker MFA (FIDO2!) schützen
  • Privilegierte IdP-Admins: eigene Admin-Workstations
  • PIM für IdP-Admin-Rollen (Just-in-Time, zeitbegrenzt)

2. Session-Token-Hijacking

  • SSO-Token in Cookie oder URL kann gestohlen werden
  • AiTM-Phishing (Adversary-in-the-Middle):
    • Evilginx, Modlishka: Transparent Proxy zwischen User + IdP
    • Phishing-Seite routet durch - stiehlt Session-Cookie!
    • MFA-Klick schützt NICHT (Session nach MFA gestohlen!)

Schutz gegen AiTM:

  • FIDO2/Passkeys: Token ist domain-gebunden (kann nicht gestohlen werden!)
  • Conditional Access: Session-Lifetime begrenzen (1-8h)
  • Token-Binding: Session an TLS-Verbindung binden (Entra ID)
  • Continuous Access Evaluation (CAE): Echtzeit-Risikobewertung

3. SAML-Angriffe

XML Signature Wrapping (XSW):

  • Angreifer kopiert legitime Assertion + fügt eigene Assertion ein
  • Parser verarbeitet falsche Assertion wenn Implementierung fehlerhaft

IdP-initiated SSO Missbrauch:

  • IdP sendet unaufgefordert SAML-Assertion
  • Keine Nonce/RequestID-Verifikation = Replay möglich

4. OAuth 2.0 / OIDC Schwachstellen

State Parameter CSRF:

  • Fehlender/ungültiger state-Parameter
  • CSRF-Angriff: Benutzer loggt sich mit Angreifer-Account ein!

Redirect URI Manipulation:

JWT-Schwächen:

  • alg=none: Signatur wird nicht geprüft
  • RS256→HS256: Key-Confusion-Angriff

5. SSO-Provisioning-Risiken

  • JIT-Provisioning: Neuer User wird automatisch angelegt
  • Problem: Fehlerhafte Attribut-Mapping → falsche Rollen!
  • Beispiel: email-domain-Matching gibt falschen Users Admin-Rechte

SSO-Implementierungs-Best-Practices

Conditional Access (Entra ID)

Policy-Beispiel - Alle Admin-Logins → MFA + Compliant Device erforderlich:

  • Nutzerzuweisung: Alle Benutzer
  • Cloud-Apps: Alle Cloud-Apps
  • Bedingungen: Locations: Alle außer trusted IPs; Device Platforms: Alle
  • Zugriffssteuerung: Grant: MFA erforderlich UND Compliant Device
  • Session: Sign-in Frequency: 1 Tag; Persistent browser session: Nein

Hochprivilegierte Accounts:

  • Nutzerzuweisung: Alle Global Admins
  • Zugriffssteuerung: FIDO2-only (kein SMS/TOTP!)
  • Session: 4-stündige Session-Limits

Token-Lifetime-Policies

# Entra ID PowerShell:
New-AzureADPolicy -Type TokenLifetimePolicy -Definition @('
{
  "TokenLifetimePolicy": {
    "Version": 1,
    "AccessTokenLifetime": "01:00:00",
    "MaxInactiveTime": "30.00:00:00"
  }
}
') -DisplayName "ShortTokenLifetime" -IsOrganizationDefault $true

App-Registration Hygiene

# Audit: welche Apps haben SSO-Zugriff?
Get-AzureADServicePrincipal -All $true |
  Where-Object {$_.Tags -contains "WindowsAzureActiveDirectoryIntegratedApp"} |
  Select-Object DisplayName, AppId, ReplyUrls

# Review: unused Apps, overprivileged Scopes
# Graph API Consent: "User.ReadAll" - sollte kein normaler User haben!

SCIM-Provisioning (automatische User-Anlage)

  • SCIM 2.0: Standard für User-Provisioning zwischen IdP und App
  • Entra ID → Salesforce/GitHub/Slack via SCIM
  • Vorteil: Offboarding automatisch (User-Deaktivierung sofort!)
  • Konfiguration: Attribute Mapping sorgfältig prüfen!

Keycloak Härtung

# keycloak.conf Sicherheitseinstellungen:
https-protocols=TLSv1.3
https-cipher-suites=TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256
http-enabled=false  # Kein HTTP!

Brute-Force Protection (realm settings → Security Defenses):

  • Max Login Failures: 5
  • Wait Increment: 30s
  • Max Wait: 900s (15 Minuten)
  • Failure Reset Time: 720 (12 Stunden)

Monitoring

// Entra ID Sign-in Logs → Sentinel:
SigninLogs
| where ResultType != 0  // Fehlgeschlagene Logins
| where UserPrincipalName !endswith "@serviceprincipal"
| summarize FailedLogins = count() by UserPrincipalName, IPAddress, bin(TimeGenerated, 1h)
| where FailedLogins > 10  // Brute Force!
| order by FailedLogins desc

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung