Fähigkeit

OIDC / OAuth 2.0-Föderation

Eine vollständige OpenID-Connect-Relying-Party am Zugriffsrand — verifizierte ID-Tokens, replay-resistente Flows und IdP-Routing pro Tenant.

Moderne Unternehmens- und Verbraucher-IdPs — Entra ID, Okta, Auth0, Google Workspace, GitHub, Keycloak — sprechen OpenID Connect über OAuth 2.0. Der richtige Ansatz für neue Anwendungen ist nicht, eine parallele Benutzerdatenbank zu pflegen; es ist, sich direkt mit diesen IdPs zu verbinden. TR7 AAM verhält sich vor der Anwendung als standardkonforme OIDC-Relying-Party. Der Authorization-Code-Flow wird mit PKCE, Nonce und einem an die Sitzung gebundenen State gestartet; der Benutzer meldet sich beim IdP mit der MFA und Richtlinie an, die dieser IdP durchsetzt; der IdP gibt AAM einen Authorization Code zurück; AAM tauscht den Code gegen Tokens, ruft das JWKS des IdP ab und verifiziert Signatur, Audience, Issuer, Gültigkeitsfenster und Nonce des ID-Tokens, bevor es die Identität extrahiert. Die verifizierten ID-Token-Claims werden mit der Antwort des userinfo-Endpoints zusammengeführt und auf eine kanonische AAM-Sitzungs-ID abgebildet. Ein einziges AAM-Gateway kann unterschiedliche Anwendungen an unterschiedliche IdPs und unterschiedliche Tenants derselben Anwendung gleichzeitig an unterschiedliche IdPs routen. Das Ergebnis: Der Rest der Zugriffs-Engine — Conditional Access, Gerätevertrauen, Edge-MFA, Backend-SSO — setzt auf der OIDC-Sitzung auf. Jeder Schritt wird auditiert; ID-Token-Validierungsergebnisse (Signatur, Nonce, Audience, Issuer, Gültigkeit) sind erstklassige Audit-Ereignisse; so kann das Sicherheitsteam die Frage „Wer hat sich über welchen IdP mit welchem Ergebnis angemeldet?" aus einem einzigen Flow beantworten.

OIDC + OAuth 2.0
Standardkonforme Relying Party — Authorization Code, PKCE, mit JWKS verifizierte ID-Tokens, Nonce- und State-Verteidigungen.
S256 PKCE
Standardmäßige Code-Challenge-Methode — abgefangene Codes können nicht durch den Angreifer eingelöst werden.
Gemeinsamer JWKS-Cache
TTL von 1 Stunde zwischen Worker-Prozessen und Gateway-Instanzen; Refresh-on-Miss für die IdP-Schlüsselrotation.

OIDC sieht von außen einfach aus — pro Anwendung integriert steckt es voller Fallstricke

OpenID Connect, aufbauend auf OAuth 2.0, ist das dominierende föderierte Identitätsprotokoll für moderne Stacks. Jeder große Unternehmens-IdP unterstützt es; jeder Cloud-Workforce-IdP bietet es an; jedes moderne Anwendungsframework stellt eine Bibliothek dafür bereit. Der vermeintlich leichte Teil ist die Annahme, dass ein paar Zeilen SDK-Code pro Anwendung ausreichen.

In der Praxis hat eine OIDC-Relying-Party, die echten Produktionsverkehr trägt, eine lange Liste von Dingen, die richtig gemacht werden müssen. Die Signatur des ID-Tokens muss gegen das vom IdP veröffentlichte JWKS unter Auswahl des korrekten Schlüssels über die kid verifiziert werden, und der Cache muss aufgefrischt werden, wenn der IdP Schlüssel rotiert. Der Audience-Claim muss mit der konfigurierten Client-ID übereinstimmen. Der Issuer muss mit dem konfigurierten erwarteten Issuer übereinstimmen. Die Gültigkeitsdauer muss mit einer begrenzten Toleranz für Uhrenabweichung geprüft werden. Die Nonce im ID-Token muss mit der Nonce übereinstimmen, die AAM in der Authorization-Anfrage gesendet hat — stimmt sie nicht überein, ist das kein Parsing-Fehler, sondern ein Replay-Versuch.

Die darunterliegende OAuth-2.0-Schicht hat ihre eigenen Fallstricke. Der State muss als CSRF an die Sitzung des Benutzers gebunden sein und eine kurze TTL haben. PKCE muss verwendet werden (vorzugsweise S256), damit ein abgefangener Authorization Code nicht durch den Angreifer eingelöst werden kann. Mixup-Angriffe — bei denen der Angreifer die Relying Party dazu bringt, mit dem falschen IdP zu sprechen — werden vereitelt, indem der Callback an einen bestimmten IdP gebunden und der Issuer entsprechend verifiziert wird. In einer reinen SDK-Integration ist keine dieser Verteidigungen automatisch.

Eine weitere Fehlerform ist, das OIDC-SDK direkt in jede Anwendung einzubetten. Jede Anwendung trägt in diesem Fall ihre eigenen Vertrauensentscheidungen, ihren eigenen JWKS-Cache, ihre eigenen Audit-Logs und ihre eigene IdP-Konfiguration separat. Eine einzige IdP-Änderung wird zu einem koordinierten Multi-Anwendungs-Rollout. MFA, Conditional Access, Gerätevertrauen und Logout-Verhalten werden für jede Anwendung separat und oft inkonsistent neu gelöst.

Die operative Seite ist ebenso wichtig. Das Aktualisieren des Discovery-Dokuments des IdP, das Behandeln der Signaturschlüssel-Rotation, unterschiedliches IdP-Routing pro Tenant, unterschiedliche Claim-Mappings für unterschiedliche Anwendungen und Logout-Flows sind keine nachträglich hinzugefügten Kleinigkeiten. Sie sind grundlegende Bestandteile dafür, dass die OIDC-Föderation sicher und nachhaltig läuft.

Der richtige Ort ist der Zugriffsrand. OIDC sollte an einem einzigen Punkt verifiziert und auf derselben Schicht wie Authentifizierung, MFA, Conditional Access, Gerätevertrauen und Backend-SSO verwaltet werden. So tragen Anwendungen nicht die Komplexität des Föderationsprotokolls; sie erhalten nur eine verifizierte, saubere und vertrauenswürdige Identität.

OIDC richtig zu verwalten heißt nicht nur, sich per SDK mit einem IdP zu verbinden. Es heißt, das ID-Token an einem einzigen Punkt — in derselben Engine wie MFA, Conditional Access, Gerätevertrauen und Backend-SSO — standardkonform zu verifizieren, zu auditieren und sicher zu den Anwendungen zu transportieren.

Unser Ansatz

Ein einziges AAM-Gateway terminiert OIDC am Rand korrekt; der Rest der Zugriffs-Engine setzt darauf auf.

Vollständige OpenID-Connect-Relying-Party plus OAuth-2.0-Client

Authorization-Code-Flow mit PKCE, ID-Token-Signaturprüfung über JWKS, an die Nonce gebundene Replay-Verteidigung, an den State gebundene CSRF-Verteidigung, Durchsetzung von Audience/Issuer/Gültigkeit. Dieselbe Engine spricht reines OAuth 2.0 für IdPs, die kein ID-Token ausstellen; so teilen sich reine Token-Provider und vollständige OIDC-Provider eine einzige Codebasis.

IdP-Routing pro Anwendung und Tenant

Ein einziges AAM-Gateway kann unterschiedliche Anwendungen an unterschiedliche IdPs und unterschiedliche Tenants derselben Anwendung gleichzeitig an unterschiedliche IdPs routen. Die IdP-Auswahl erfolgt pro Anfrage aus dem Anwendungs- oder Tenant-Kontext — kein separates Gateway pro IdP, keine manuelle Auswahl für den Benutzer.

Replay-, CSRF- und Mixup-Angriffe werden standardmäßig vereitelt

Die Nonce bindet das ID-Token an die Authorization-Anfrage, die es angefordert hat; der State bindet den Callback an die Sitzung des Benutzers; PKCE bindet die Code-Einlösung an den ursprünglichen Public Client. Keine davon ist ein optionales Flag, das der Integrator vergessen könnte — sie sind der Standard-Flow selbst.

Koordiniert mit MFA, Conditional Access, Gerätevertrauen und Backend-SSO

Eine OIDC-Authentifizierung läuft nicht allein — sie wird mit Edge-MFA (falls der IdP keinen Step-up durchgesetzt hat), Conditional-Access-Ausdrücken, kontinuierlicher Vertrauensbewertung und Backend-SSO-Injektion zum Backend hin orchestriert. Das ID-Token wird zu einem Input für die AAM-Sitzung; es wird nicht zur gesamten Sitzung.

Fähigkeiten

Standardkonforme OIDC-Relying-Party plus die operativen Funktionen, die Föderation im großen Maßstab sicher und verwaltbar machen.

Authorization-Code-Flow mit PKCE (Standard S256)

AAM startet den OAuth-2.0-Authorization-Code-Flow mit standardmäßig aktiviertem PKCE — code_challenge_method=S256, ein frischer code_verifier für jede Anfrage, niemals wiederverwendet. Ein Angreifer, der den Verifier nicht erzeugt, kann einen abgefangenen Authorization Code nicht gegen Tokens einlösen. Plain PKCE bleibt für IdPs verfügbar, die es vorschreiben; S256 ist der konfigurierte Standard.

ID-Token-Signaturprüfung gegen das IdP-JWKS

Wenn der Callback eintrifft, ruft AAM das JWKS des IdP ab, wählt den Signaturschlüssel aus dem kid-Header des ID-Tokens und verifiziert die Signatur des ID-Tokens mit dem im Header angegebenen Algorithmus (RS256 und der Rest der Standardfamilie). Ein Cache-Miss auf der kid frischt das JWKS sofort auf; so lässt eine IdP-Schlüsselrotation gültige Anmeldungen nicht hängen.

Audience, Issuer, Gültigkeit und Nonce — nicht nur geparst, sondern durchgesetzt

Der Audience-Claim des ID-Tokens muss die konfigurierte Client-ID enthalten; der Issuer muss mit dem konfigurierten erwarteten Issuer übereinstimmen; das Gültigkeitsfenster (exp/nbf) wird mit einer begrenzten Toleranz für Uhrenabweichung durchgesetzt; die Nonce muss mit der Nonce übereinstimmen, die AAM in der Authorization-Anfrage gesendet hat. Eine Nonce-Diskrepanz wird nicht als Parsing-Fehler, sondern als Replay-Signal mit eigenem Audit-Ereignis behandelt.

Gemeinsamer JWKS-Cache mit Refresh-on-Miss für die Schlüsselrotation

JWKS-Antworten werden in einem zwischen Worker-Prozessen und Gateway-Instanzen geteilten Speicher mit einer TTL von 1 Stunde zwischengespeichert. Ein Cache-Hit eliminiert den Netzwerk-Roundtrip bei jeder Anmeldung; ein Cache-Miss auf der angeforderten kid löst sofort einen Refresh von der JWKS-URI aus; so erzeugt eine routinemäßige IdP-Schlüsselrotation keine Anmeldeunterbrechung.

OIDC-Parameter: scope, display, max_age, ui_locales, acr_values

Standardmäßige OIDC-Authorization-Parameter sind erstklassige Konfiguration: scope (openid wird automatisch hinzugefügt), display für die IdP-Anmeldeerfahrung, max_age für erzwungene Re-Authentifizierung, ui_locales für lokalisierte IdP-Seiten und acr_values, um eine bestimmte Authentication-Context-Class anzufordern — nützlich, um Step-up-MFA-Durchsetzung vom IdP anzufordern.

Eingebaute Provider-Profile plus vollständig benutzerdefinierte IdPs

Eingebaute Profile kommen mit vernünftigen Standardwerten für gängige Provider (Well-known-Endpoints, JWKS-URIs, Scope-Konventionen). Für jeden standardkonformen OIDC- oder OAuth-2.0-Provider bleibt der Custom-IdP-Pfad verfügbar, bei dem Endpoints, Scopes und Mappings manuell angegeben werden.

ID-Token-Claims werden mit userinfo zusammengeführt; signierte Claims haben Vorrang

Nach der Signaturprüfung werden die Claims des ID-Tokens mit der Antwort vom userinfo-Endpoint des IdP zusammengeführt. Bei Konflikt gelten die signierten ID-Token-Claims gegenüber den unsignierten userinfo-Feldern als vorrangig; so kann ein Angreifer, der die userinfo-Antwort manipuliert, einen signierten Identitäts-Claim nicht stillschweigend ändern.

Roadmap — RP-Initiated Logout, Back-Channel-Logout, dynamische Client-Registrierung

RP-Initiated Logout (der signierte Front-Channel-Logout der OIDC-Spezifikation) und Back-Channel-Logout für Sitzungsbeendigungs-Benachrichtigungen vom IdP sind auf der Roadmap. Die dynamische OIDC-Client-Registrierung — die Inbetriebnahme einer neuen Anwendung durch automatische Registrierung beim IdP — ist ebenfalls geplant. Die Sitzungs- und Audit-Infrastruktur ist bereits darauf ausgelegt, diese Flows zu bedienen.

Operative Tiefe

Die Mechanik, die eine OIDC-Föderation sicher, aktuell und beobachtbar hält.

01

State-Bindung mit 10-Minuten-TTL und Sitzungsprüfung

Der OAuth-State-Parameter wird gegen die Sitzung des Benutzers mit einer TTL von 10 Minuten gespeichert. Wenn der Callback eintrifft, verifiziert AAM, dass der State zur selben Sitzung gehört, die den Flow gestartet hat — ein Angreifer, der einen State-Wert in den Browser eines anderen Benutzers wiedereinspielt, wird mit einem OAUTH_STATE_MISMATCH-Audit-Ereignis abgelehnt.

02

Audit bei jeder Überspringung der ID-Token-Validierung — nach Grundursache

Wenn die ID-Token-Signaturprüfung aus einem operativen Grund übersprungen wird — JWKS nicht erreichbar, keine passende kid, defekter JWK, fehlende JWKS-URI — protokolliert ein dediziertes Audit-Ereignis die spezifische Grundursache. Operatoren können einen temporären JWKS-Ausfall von einer Fehlkonfiguration oder einem nicht unterstützten Schlüsseltyp unterscheiden, ohne Runtime-Logs erneut durchzulesen.

03

Begrenzte Toleranz für Uhrenabweichung pro IdP

ID-Tokens tragen iat-, nbf- und exp-Zeitstempel. Reale Uhren driften; AAM wendet eine begrenzte Toleranz für Uhrenabweichung an (Standard 60 Sekunden für den darunterliegenden JWT-Validator); so lehnt eine kleine Abweichung keine gültigen Anmeldungen ab, während große Abweichungen — ein Indikator für Fehlkonfiguration oder Replay — dennoch abgelehnt werden.

04

Token-Tausch und userinfo mit gehärteten Netzwerk-Timeouts

Token-Tausch- und userinfo-Anfragen an den IdP verwenden begrenzte Verbindungs-, DNS- und Gesamt-Timeouts; so kann ein langsamer oder nicht reagierender IdP keine Gateway-Worker belegen. Der Token-Tausch läuft mit einem Gesamtbudget von 30 Sekunden; userinfo läuft mit einem Budget von 15 Sekunden; beide haben kürzere Verbindungs- und DNS-Budgets; so scheitern Fehlschläge schnell.

05

Audit pro Ereignis, mit der AAM-Sitzung korreliert

Jeder Schritt des OIDC-Flows — Flow-Start, Callback-Erfolg, Token-Tausch (welche Tokens zurückkamen), Ergebnis der ID-Token-Signaturprüfung, Ergebnis des JWKS-Abrufs — wird mit einer Korrelations-ID protokolliert, die auf die AAM-Sitzung und das/die dahinterliegende(n) Backend(s) zurückverweist. Die Frage „Wer hat sich wann über welchen IdP angemeldet?" wird mit einer einzigen Abfrage beantwortet.

06

Roadmap — automatische Provider-Discovery und JWKS-Rotations-Telemetrie

Automatische OIDC-Provider-Discovery über den Endpoint .well-known/openid-configuration und eine Warnung an den Operator, wenn sich entdeckte Endpoints oder Signaturschlüsselsätze ändern, sind auf der Roadmap. JWKS-Rotations-Telemetrie — Metriken zum Signaturschlüsselwechsel, Hinweise zu den verbleibenden Tagen bis zum Ablauf des aktuellen Schlüssels, automatische Rotations-Runbooks — ist ebenfalls geplant.

Welche Teams es nutzen

Moderne Unternehmens-IdPs (Entra ID, Okta, Auth0, Keycloak)

Bestehende Unternehmens-IdPs, die die Belegschaft bereits über OIDC authentifizieren. AAM klinkt sich als Relying Party ein, ohne vom IdP-Team irgendeine Änderung zu verlangen. Neue Anwendungen treten der Föderation bei, indem sie einen Eintrag in AAM hinzufügen — nicht indem sie jeder Codebasis ein neues OIDC-SDK hinzufügen.

Workforce-Social-IdPs (Google Workspace, GitHub)

Interne Tools, die gegen den Google-Workspace-Tenant der Organisation authentifizieren, oder Entwickler-Tools, die GitHub als IdP verwenden. AAM spricht OIDC mit Google und OAuth 2.0 mit GitHub — aus derselben Engine — und bildet jedes auf das kanonische AAM-Sitzungsformat ab.

Multi-Tenant-SaaS mit OIDC-IdP pro Tenant

SaaS-Anwendungen, bei denen jeder Kunde seinen eigenen OIDC-IdP mitbringt. Ein einziges AAM-Gateway hält alle Tenants vorgelagert; der Verkehr jedes Tenants wird an den IdP dieses Tenants geroutet. Einen Tenant hinzuzufügen bedeutet, eine Konfigurationsänderung im IdP-Registry-Speicher vorzunehmen — kein Deployment.

Edge-MFA und Conditional Access über einem OIDC-IdP

Manche IdPs authentifizieren, setzen aber Step-up-MFA oder Conditional Access nicht für jede Anwendung gleichermaßen durch. AAM akzeptiert die Authentifizierung des IdP, setzt dann seine eigene MFA, Conditional-Access-Ausdrücke und kontinuierliche Vertrauensbewertung darauf auf, bevor es Zugriff auf die Anwendung gewährt.

Häufig gestellte Fragen

Mit welchen IdPs föderiert AAM über OIDC und OAuth 2.0?
Mit jedem standardkonformen OIDC- oder OAuth-2.0-IdP. In der Praxis schließt das Entra ID (Azure AD), Okta, Auth0, Keycloak, Google Workspace, GitHub und jeden benutzerdefinierten IdP ein, der Standard-Endpoints anbietet. Eingebaute Profile kommen mit vernünftigen Standardwerten für gängige Provider; der Custom-IdP-Pfad, bei dem Endpoints, Scopes und Mappings manuell angegeben werden, bleibt für jeden standardkonformen Provider verfügbar.
Wie verteidigt AAM gegen ID-Token-Replay, CSRF und Mixup-Angriffe?
Die Nonce bindet das ID-Token an die Authorization-Anfrage, die es angefordert hat — eine Diskrepanz ist ein dediziertes Replay-Signal mit eigenem Audit-Ereignis. Der State bindet den Callback mit einer TTL von 10 Minuten an die Sitzung des Benutzers — ein Cross-Session-Replay wird abgelehnt. PKCE (Standard S256) bindet die Code-Einlösung an den ursprünglichen Client — ein abgefangener Authorization Code kann nicht durch den Angreifer gegen Tokens eingelöst werden. Mixup-Angriffe werden vereitelt, indem der Callback an einen bestimmten IdP gebunden und der Issuer-Claim entsprechend verifiziert wird.
Was passiert, wenn der IdP seine Signaturschlüssel rotiert?
Das JWKS wird in einem gemeinsamen Speicher mit einer TTL von 1 Stunde zwischengespeichert. Wenn der Callback eintrifft, wählt AAM den Signaturschlüssel aus dem kid-Header des ID-Tokens aus dem Cache. Ist die kid nicht im zwischengespeicherten Satz — was unmittelbar nach einer IdP-Schlüsselrotation der Fall ist — löst AAM sofort einen Refresh von der JWKS-URI aus und wiederholt die Auswahl. Eine routinemäßige Schlüsselrotation erzeugt keine Anmeldeunterbrechung.
Was ist auf dieser Seite der Unterschied zwischen OIDC und reinem OAuth 2.0?
OIDC fügt eine Identitätsschicht über OAuth 2.0 hinzu: Neben dem Access Token wird ein signiertes ID-Token mit Identitäts-Claims zurückgegeben. AAM spricht beides. Für OIDC-Provider wird das ID-Token gegen das JWKS verifiziert und mit der userinfo-Antwort zusammengeführt; signierte Claims haben Vorrang. Für reine OAuth-2.0-Provider (kein ID-Token) stützt sich AAM für die Identität nur auf die userinfo-Antwort und setzt um den Flow herum dieselben Audit-, State- und PKCE-Verteidigungen durch.
Was passiert mit der Identität, nachdem AAM die Tokens konsumiert hat?
Die verifizierten ID-Token-Claims und die userinfo-Antwort werden zusammengeführt und auf kanonische AAM-Sitzungsfelder abgebildet (Benutzername, E-Mail, Gruppen, Anzeigename, benutzerdefinierte Attribute). Der Rest der Zugriffs-Engine argumentiert über diese Sitzung — MFA-Gating, Conditional-Access-Ausdrücke, kontinuierliche Vertrauensbewertung, Backend-SSO-Injektion zum Backend hin. Die Anwendung erhält die Identität in der Form, die sie über Backend-SSO erwartet; das OIDC-Protokoll endet am AAM-Rand.

OIDC richtig gemacht, am Rand

Lassen Sie uns AAM mit Ihrem OIDC-IdP verbinden — Unternehmen, Cloud oder selbst gehostet — und den Rest der Zugriffs-Engine mit MFA, Conditional Access, Gerätevertrauen und Backend-SSO auf dem verifizierten ID-Token aufsetzen.