Erweitertes OAuth 2.0 API
Auris unterstützt mehrere erweiterte OAuth 2.0- und OpenID Connect-Erweiterungen über den Standard-Autorisierungscode-Flow mit PKCE hinaus. Diese Funktionen sind für Enterprise- und spezielle Authentifizierungsszenarien konzipiert:
- Device Authorization (RFC 8628) — für eingabebeschränkte Geräte wie CLIs, Smart-TVs und IoT
- Token Exchange (RFC 8693) — für Impersonierung und Delegation zwischen Diensten
- DPoP (RFC 9449) — für Sender-gebundene Tokens, die resistent gegen Token-Diebstahl sind
- CIBA (Client-Initiated Backchannel Authentication) — für Authentifizierung, die von einem Backend-Dienst ohne Browser-Interaktion eingeleitet wird
- Adaptives MFA / Risikobewertung — für dynamische Step-up-Authentifizierung basierend auf Risikobewertung
Alle erweiterten OAuth-Funktionen müssen pro Anwendung in der Auris-Konsole unter Anwendungen > [App] > Erweitertes OAuth aktiviert werden.
Device Authorization (RFC 8628)
Der Device Authorization Grant ermöglicht Geräten, die keinen Browser anzeigen können (CLIs, Smart-TVs, IoT-Geräte, Kioske), Benutzer zu authentifizieren. Das Gerät zeigt einen kurzen Benutzercode und eine Verifizierungs-URL an; der Benutzer besucht die URL auf einem separaten Gerät (Telefon, Laptop) und gibt den Code zur Genehmigung ein.
/api/oauth/device-authorizeFordert ein Device-Code- und User-Code-Paar an. Das Gerät zeigt dem Benutzer den user_code
und die verification_uri an und fragt dann den Token-Endpunkt ab, bis der Benutzer
genehmigt oder der Code abläuft.
Anfrage-Body
{
"client_id": "cli-app-client-id",
"scope": "openid profile email"
}| Feld | Erforderlich | Beschreibung |
|---|---|---|
client_id | Ja | Die Client-ID der Anwendung. Die Anwendung muss Device Flow aktiviert haben. |
scope | Nein | Leerzeichen-getrennte Liste der angeforderten Scopes. |
Erfolgsantwort
{
"ok": true,
"data": {
"device_code": "GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS",
"user_code": "WDJB-MJHT",
"verification_uri": "https://api.altovar.net/hosted/device",
"verification_uri_complete": "https://api.altovar.net/hosted/device?user_code=WDJB-MJHT",
"expires_in": 1800,
"interval": 5
}
}| Feld | Beschreibung |
|---|---|
device_code | Ein langer, undurchsichtiger Code, den das Gerät zum Abfragen des Token-Endpunkts verwendet. Wird dem Benutzer nie angezeigt. Wird als SHA-256-Hash auf dem Server gespeichert. |
user_code | Ein kurzer, menschenlesbarer 8-stelliger Code (Format: XXXX-XXXX), der dem Benutzer angezeigt wird. |
verification_uri | Die URL, die der Benutzer auf einem separaten Gerät besucht, um den Code einzugeben. |
verification_uri_complete | Die URL mit vorausgefülltem Code. Nützlich für QR-Codes. |
expires_in | Sekunden bis zum Ablauf des Device-Codes (Standard: 30 Minuten). |
interval | Mindestabstand in Sekunden zwischen Abfrageanfragen. |
Fehlercodes
| Code | HTTP | Beschreibung |
|---|---|---|
DEVICE_FLOW_DISABLED | 400 | Device Authorization ist für diese Anwendung nicht aktiviert |
VALIDATION_ERROR | 400 | client_id fehlt |
Token-Abfrage
Nach der Anzeige des Benutzercodes fragt das Gerät den Token-Endpunkt im angegebenen Intervall ab:
Anfrage-Body
{
"grant_type": "urn:ietf:params:oauth:grant-type:device_code",
"device_code": "GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS",
"client_id": "cli-app-client-id"
}Ausstehende Antwort (Benutzer hat noch nicht genehmigt)
{
"ok": false,
"error": {
"code": "AUTHORIZATION_PENDING",
"message": "The user has not yet approved the request. Continue polling."
}
}Verlangsamungsantwort (zu häufige Abfrage)
{
"ok": false,
"error": {
"code": "SLOW_DOWN",
"message": "Polling too frequently. Increase interval by 5 seconds."
}
}Erfolgsantwort (Benutzer genehmigt)
{
"ok": true,
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiJ9...",
"refreshToken": "rt_...",
"expiresIn": 900,
"tokenType": "Bearer"
}
}Fehlercodes während der Abfrage
| Code | HTTP | Beschreibung |
|---|---|---|
AUTHORIZATION_PENDING | 400 | Benutzer hat noch nicht genehmigt — weiter abfragen |
SLOW_DOWN | 400 | Abfrage zu häufig — Intervall erhöhen |
EXPIRED_TOKEN | 400 | Der Device-Code ist abgelaufen. Einen neuen Flow starten. |
ACCESS_DENIED | 400 | Der Benutzer hat die Autorisierungsanfrage abgelehnt |
Die öffentliche Verifizierungsseite unter verification_uri zeigt das gehostete Login-Formular, das für die Gerätegenehmigung vorkonfiguriert ist. Der Benutzer gibt den Code ein, authentifiziert sich (Passwort, SSO, Magic Link usw.) und genehmigt. Die nächste Abfrage des Geräts gibt Tokens zurück.
Benutzerverifizierungsseite
Auris stellt eine gehostete Verifizierungsseite unter /hosted/device bereit, auf der der Benutzer:
- Den 8-stelligen Benutzercode eingibt (oder über
verification_uri_completemit vorausgefülltem Code ankommt) - Sich mit einer beliebigen konfigurierten Methode authentifiziert (Passwort, SSO, Magic Link, 2FA)
- Die Gerät-Autorisierungsanfrage genehmigt
- Einen Bestätigungsbildschirm sieht und den Tab schließen kann
Token Exchange (RFC 8693)
Token Exchange ermöglicht es einem Dienst, ein Token gegen ein anderes auszutauschen — entweder zur Impersonierung eines Benutzers (als dieser handeln) oder zur Delegation des Zugriffs (im Namen von ihm handeln, während der ursprüngliche Betreff erhalten bleibt). Dies ist für Microservice-Architekturen unerlässlich, bei denen ein API-Gateway nachgelagerte Dienste mit unterschiedlichen Token-Scopes aufrufen muss.
/api/auth/tokenRequires: impersonate:users or delegate:tokensTauscht ein Token mit dem Token-Exchange-Grant-Typ aus. Der Aufrufer muss ein gültiges Subject-Token vorlegen und den Austauschtyp angeben.
Anfrage-Body — Impersonierung
Bei der Impersonierung wird das Subject vollständig ersetzt. Das resultierende Token hat den Zielbenutzer als sub-Claim. Verwende dies, wenn ein Administrator zum Debugging als Benutzer agieren muss.
{
"grant_type": "urn:ietf:params:oauth:grant-type:token-exchange",
"subject_token": "eyJhbGciOiJSUzI1NiJ9...",
"subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
"requested_token_type": "urn:ietf:params:oauth:token-type:access_token",
"exchange_type": "impersonation",
"target_user_id": "usr_target123"
}Anfrage-Body — Delegation
Bei der Delegation bleibt das ursprüngliche Subject erhalten und ein act-(Actor-)Claim wird dem resultierenden Token hinzugefügt. Der nachgelagerte Dienst kann sowohl sehen, für wen das Token ist, als auch wer in seinem Namen agiert.
{
"grant_type": "urn:ietf:params:oauth:grant-type:token-exchange",
"subject_token": "eyJhbGciOiJSUzI1NiJ9...",
"subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
"requested_token_type": "urn:ietf:params:oauth:token-type:access_token",
"exchange_type": "delegation"
}| Feld | Erforderlich | Beschreibung |
|---|---|---|
grant_type | Ja | Muss urn:ietf:params:oauth:grant-type:token-exchange sein |
subject_token | Ja | Das vorhandene Zugriffstoken zum Austauschen |
subject_token_type | Ja | Muss urn:ietf:params:oauth:token-type:access_token sein |
requested_token_type | Ja | Der gewünschte Ausgabe-Token-Typ. Typischerweise urn:ietf:params:oauth:token-type:access_token |
exchange_type | Ja | Entweder impersonation oder delegation |
target_user_id | Ja* | Für Impersonierung erforderlich — die zu impersonierende Benutzer-ID |
scope | Nein | Leerzeichen-getrennte Scopes für das neue Token. Muss eine Teilmenge des Originals sein. |
Erfolgsantwort — Impersonierung
{
"ok": true,
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiJ9...",
"issuedTokenType": "urn:ietf:params:oauth:token-type:access_token",
"tokenType": "Bearer",
"expiresIn": 900
}
}Die JWT-Payload des impersonierten Tokens hat "sub": "usr_target123", wobei die ursprüngliche Identität des impersonierenden Benutzers in den Audit-Protokollen erfasst wird.
Erfolgsantwort — Delegation
{
"ok": true,
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiJ9...",
"issuedTokenType": "urn:ietf:params:oauth:token-type:access_token",
"tokenType": "Bearer",
"expiresIn": 900
}
}Die JWT-Payload des delegierten Tokens enthält einen act-Claim:
{
"sub": "usr_original_user",
"act": {
"sub": "usr_acting_service"
},
"scope": "read:users"
}Fehlercodes
| Code | HTTP | Beschreibung |
|---|---|---|
TOKEN_EXCHANGE_DISABLED | 400 | Token Exchange ist für diese Anwendung nicht aktiviert |
INVALID_SUBJECT_TOKEN | 400 | Das Subject-Token ist ungültig oder abgelaufen |
TARGET_USER_NOT_FOUND | 404 | Die target_user_id existiert nicht |
PERMISSION_DENIED | 403 | Dem Aufrufer fehlt die Berechtigung impersonate:users oder delegate:tokens |
SCOPE_EXCEEDS_ORIGINAL | 400 | Der angeforderte Scope ist keine Teilmenge des Scopes des ursprünglichen Tokens |
Impersonierung ist eine hochprivilegierte Operation. Die Berechtigung impersonate:users sollte auf Admin-Rollen und M2M-Service-Konten beschränkt sein, die sie benötigen. Alle Impersonierungsereignisse werden im Audit-Protokoll mit sowohl dem Akteur als auch dem impersonierten Benutzer erfasst.
DPoP — Sender-gebundene Tokens (RFC 9449)
Demonstration of Proof-of-Possession (DPoP) bindet Tokens an einen bestimmten Client, indem bei jeder Anfrage ein kryptografischer Nachweis erforderlich ist. Selbst wenn ein DPoP-gebundenes Token gestohlen wird, kann es ohne den entsprechenden privaten Schlüssel nicht verwendet werden.
Funktionsweise von DPoP
- Der Client generiert ein Schlüsselpaar (typischerweise EC P-256 oder RSA) und bewahrt den privaten Schlüssel sicher auf.
- Bei jeder Anfrage erstellt der Client ein signiertes DPoP-Proof-JWT, das die HTTP-Methode, URL und eine eindeutige
jtienthält. - Der Server validiert den Nachweis, extrahiert den JWK-Thumbprint und bindet das ausgestellte Token an diesen Schlüssel.
- Nachfolgende API-Aufrufe müssen sowohl das DPoP-Token als auch einen frischen DPoP-Nachweis enthalten, der mit demselben Schlüssel signiert ist.
DPoP-gebundene Tokens anfordern
Füge einen DPoP-Header bei jeder Token-Anfrage ein (Login, Aktualisierung, Autorisierungscode-Austausch):
POST /api/auth/token HTTP/1.1
Content-Type: application/json
DPoP: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJodG0iOiJQT1NUIiwiaHR1IjoiaHR0cHM6Ly95b3VyLWF1cmlzLWRvbWFpbi5jb20vYXBpL2F1dGgvdG9rZW4iLCJpYXQiOjE3MDg1MjEyMDAsImp0aSI6InVuaXF1ZS1pZC0xMjMifQ.signatureDPoP-Proof-JWT-Struktur
Header:
{
"alg": "ES256",
"typ": "dpop+jwt",
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "...",
"y": "..."
}
}Payload:
{
"htm": "POST",
"htu": "https://api.altovar.net/api/auth/token",
"iat": 1708521200,
"jti": "unique-id-123",
"nonce": "server-provided-nonce"
}| Feld | Beschreibung |
|---|---|
htm | Die HTTP-Methode der Anfrage (POST, GET usw.) |
htu | Die HTTP-URI der Anfrage (ohne Abfrageparameter) |
iat | Ausstellungszeitstempel. Muss innerhalb eines kurzen Fensters liegen (typischerweise 60 Sekunden). |
jti | Ein eindeutiger Bezeichner zur Verhinderung von Replay-Angriffen |
nonce | Vom Server bereitgestellte Nonce (enthalten, wenn der Server einen DPoP-Nonce-Header zurückgegeben hat) |
Token-Antwort mit DPoP
Wenn ein DPoP-Nachweis enthalten ist, ist das Antwort-Token DPoP-gebunden:
{
"ok": true,
"data": {
"accessToken": "eyJhbGciOiJSUzI1NiJ9...",
"tokenType": "DPoP",
"expiresIn": 900
}
}Beachte, dass tokenType "DPoP" statt "Bearer" ist. Die JWT des Zugriffstokens enthält einen cnf-(Confirmation-)Claim mit dem JWK-Thumbprint:
{
"sub": "usr_abc123",
"cnf": {
"jkt": "JWK_THUMBPRINT_BASE64URL"
}
}Nonce-Verwaltung
Der Server kann eine Nonce für Replay-Schutz erfordern. Wenn er dies tut, enthält die Antwort:
DPoP-Nonce: eyJhbGciOiJIUzI1NiJ9...Füge diese Nonce in nachfolgende DPoP-Nachweise ein. Wenn eine Anfrage ohne erforderliche Nonce eingeht, gibt der Server 400 mit einem use_dpop_nonce-Fehler und einer frischen Nonce im Header zurück.
Fehlercodes
| Code | HTTP | Beschreibung |
|---|---|---|
INVALID_DPOP_PROOF | 400 | DPoP-Proof-JWT ist fehlerhaft, abgelaufen oder hat eine ungültige Signatur |
DPOP_NONCE_REQUIRED | 400 | Server erfordert eine Nonce — erneut mit der Nonce aus dem DPoP-Nonce-Antwort-Header versuchen |
DPOP_JKT_MISMATCH | 401 | Der DPoP-Nachweis wurde mit einem anderen Schlüssel signiert als dem, an den das Token gebunden ist |
DPOP_DISABLED | 400 | DPoP ist für diese Anwendung nicht aktiviert |
CIBA — Client-Initiated Backchannel Authentication
CIBA ermöglicht es einem Backend-Dienst, die Authentifizierung für einen Benutzer zu initiieren, ohne dass der Benutzer mit einer Browser-Weiterleitung interagieren muss. Stattdessen erhält der Benutzer eine Benachrichtigung (Push, SMS oder E-Mail) und genehmigt die Anfrage auf seinem Gerät.
Dies ist nützlich für Szenarien wie Call-Center-Authentifizierung (“Ich rufe von Ihrer Bank an, bitte genehmigen Sie die Anmeldung auf Ihrem Telefon”) oder Point-of-Sale-Transaktionen.
/api/oauth/backchannel/authorizeRequires: manage:ciba_configLeitet eine CIBA-Authentifizierungsanfrage ein. Der Server sendet eine Benachrichtigung an den identifizierten Benutzer. Der aufrufende Dienst fragt dann ab (oder erhält einen Callback), um Tokens zu erhalten, sobald der Benutzer genehmigt.
Anfrage-Body
{
"client_id": "backend-service-id",
"client_secret": "backend-service-secret",
"scope": "openid profile",
"login_hint": "[email protected]",
"binding_message": "Approve login for Order #12345",
"requested_expiry": 300
}| Feld | Erforderlich | Beschreibung |
|---|---|---|
client_id | Ja | Die Client-ID der M2M-Anwendung |
client_secret | Ja | Das Client-Secret der M2M-Anwendung |
scope | Nein | Angeforderte Scopes |
login_hint | Ja | E-Mail-Adresse oder Benutzer-ID zur Identifizierung des zu authentifizierenden Benutzers |
binding_message | Nein | Für Menschen lesbarer Text, der dem Benutzer in der Benachrichtigung angezeigt wird (max. 256 Zeichen) |
requested_expiry | Nein | Sekunden bis zum Ablauf der Anfrage (Standard: 300, max: 600) |
Erfolgsantwort
{
"ok": true,
"data": {
"auth_req_id": "ciba_req_abc123def456",
"expires_in": 300,
"interval": 5
}
}Benachrichtigungsmodi
CIBA unterstützt drei Benachrichtigungszustellungsmodi, die pro Anwendung konfiguriert werden:
| Modus | Beschreibung |
|---|---|
poll | Der Dienst fragt den Token-Endpunkt mit auth_req_id ab. Standardmodus. |
ping | Auris sendet einen HTTP-Callback an den registrierten notification_endpoint der Anwendung, wenn der Benutzer antwortet. Der Dienst ruft dann den Token-Endpunkt auf. |
push | Auris sendet die Tokens direkt in der Callback-Payload an den notification_endpoint. Keine Abfrage erforderlich. |
CIBA-Token-Abfrage
Im poll-Modus fragt der Dienst den Token-Endpunkt ab:
{
"grant_type": "urn:openid:params:grant-type:ciba",
"auth_req_id": "ciba_req_abc123def456",
"client_id": "backend-service-id",
"client_secret": "backend-service-secret"
}Die Abfrageantworten folgen demselben Muster wie beim Device Authorization:
AUTHORIZATION_PENDINGwährend des Wartens auf BenutzergenehmigungSLOW_DOWNbei zu häufiger AbfrageEXPIRED_TOKENbei Ablauf der AnfrageACCESS_DENIEDwenn der Benutzer die Anfrage abgelehnt hat- Vollständige Token-Antwort bei Genehmigung
Fehlercodes
| Code | HTTP | Beschreibung |
|---|---|---|
CIBA_DISABLED | 400 | CIBA ist für diese Anwendung nicht aktiviert |
USER_NOT_FOUND | 404 | login_hint stimmt mit keinem Benutzer überein |
NOTIFICATION_FAILED | 500 | Die Authentifizierungsbenachrichtigung konnte nicht an den Benutzer zugestellt werden |
BINDING_MESSAGE_TOO_LONG | 400 | binding_message überschreitet 256 Zeichen |
Risikobewertung und adaptives MFA
Auris führt bei jedem Authentifizierungsversuch eine automatische Risikobewertung durch. Der Risikoscore wird aus fünf gewichteten Faktoren berechnet und bestimmt, ob zusätzliche Authentifizierungsschritte (Step-up-MFA) erforderlich sind.
Risikobewertungsfaktoren
| Faktor | Gewichtung | Beschreibung |
|---|---|---|
| IP-Reputation | 20% | Bekannte bösartige IPs, VPNs, Proxys, Rechenzentren |
| Gerätevertrauen | 20% | Ob der Geräte-Fingerabdruck bereits gesehen wurde |
| Geo-Anomalie | 20% | Erkennung unmöglicher Reisen (Login von einem weit entfernten Ort in zu kurzer Zeit) |
| Verhalten | 20% | Ungewöhnliche Anmeldemuster (Tageszeit, Häufigkeit) |
| Aktionssensitivität | 20% | Wie sensibel die angeforderte Aktion ist |
Risikoniveaus: LOW (0-30), MEDIUM (31-60), HIGH (61-80), CRITICAL (81-100).
Wenn der Risikoscore konfigurierte Schwellenwerte überschreitet, fordert Auris den Benutzer automatisch mit Step-up-MFA auf, bevor Tokens ausgestellt werden. Die acr-(Authentication Context Class Reference) und amr-(Authentication Methods References-)Claims in der JWT spiegeln das tatsächlich erreichte Authentifizierungsniveau wider.
/api/auth/risk/assessmentsRequires: view:risk_assessmentsListet aktuelle Risikobewertungen im gesamten Tenant auf. Nützlich zur Überwachung verdächtiger Anmeldemuster und zur Überprüfung von Risikobewertungsentscheidungen.
Abfrageparameter
| Parameter | Typ | Beschreibung |
|---|---|---|
page | integer | Seitennummer (Standard: 1) |
limit | integer | Elemente pro Seite (Standard: 20) |
userId | string | Nach Benutzer-ID filtern |
level | LOW | MEDIUM | HIGH | CRITICAL | Nach Risikoniveau filtern |
dateFrom | ISO 8601 | Beginn des Datumsbereichs |
dateTo | ISO 8601 | Ende des Datumsbereichs |
Erfolgsantwort
{
"ok": true,
"data": {
"data": [
{
"id": "risk_abc123",
"userId": "usr_def456",
"score": 72,
"level": "HIGH",
"factors": {
"ipReputation": { "score": 85, "isVpn": true, "isProxy": false },
"deviceTrust": { "score": 50, "isNewDevice": true },
"geoAnomaly": { "score": 90, "distance": 5200, "timeSinceLastLogin": 1800 },
"behavior": { "score": 60, "unusualTime": true },
"actionSensitivity": { "score": 75 }
},
"actionTaken": "step_up_mfa",
"ipAddress": "203.0.113.42",
"country": "CN",
"city": "Beijing",
"createdAt": "2025-02-18T03:45:00Z"
}
],
"pagination": { "page": 1, "limit": 20, "total": 156, "totalPages": 8 }
}
}/api/auth/risk/rulesRequires: manage:risk_rulesListet alle benutzerdefinierten Risikoregeln auf, die für den Tenant konfiguriert sind. Risikoregeln ermöglichen das Überschreiben oder Ergänzen der Standard-Bewertung für bestimmte Bedingungen.
Erfolgsantwort
{
"ok": true,
"data": [
{
"id": "rule_abc123",
"name": "Block known VPN ranges",
"condition": {
"field": "ipReputation.isVpn",
"operator": "equals",
"value": true
},
"action": "block",
"scoreModifier": 40,
"isActive": true,
"createdAt": "2025-01-15T10:00:00Z"
}
]
}/api/auth/risk/rulesRequires: manage:risk_rulesErstellt eine benutzerdefinierte Risikoregel. Regeln werden während des Logins ausgewertet und können den Risikoscore ändern, zusätzliche Authentifizierung erfordern oder den Login vollständig blockieren.
Anfrage-Body
{
"name": "Require MFA for new countries",
"condition": {
"field": "geoAnomaly.isNewCountry",
"operator": "equals",
"value": true
},
"action": "step_up_mfa",
"scoreModifier": 30,
"isActive": true
}| Feld | Erforderlich | Beschreibung |
|---|---|---|
name | Ja | Menschenlesbarer Name für die Regel |
condition | Ja | Bedingungsobjekt mit field, operator und value |
action | Ja | Eines von: allow, step_up_mfa, block, log |
scoreModifier | Nein | Punkte, die dem Risikoscore bei Bedingungsübereinstimmung hinzugefügt werden (0-100) |
isActive | Nein | Ob die Regel aktiv ist (Standard: true) |
Verfügbare Bedingungsfelder: ipReputation.isVpn, ipReputation.isProxy, ipReputation.isDatacenter, deviceTrust.isNewDevice, geoAnomaly.isNewCountry, geoAnomaly.distance, behavior.unusualTime, behavior.failedAttempts.
Verfügbare Operatoren: equals, not_equals, greater_than, less_than, contains, in.
Erfolgsantwort
{
"ok": true,
"data": {
"id": "rule_def456",
"name": "Require MFA for new countries",
"condition": {
"field": "geoAnomaly.isNewCountry",
"operator": "equals",
"value": true
},
"action": "step_up_mfa",
"scoreModifier": 30,
"isActive": true,
"createdAt": "2025-02-18T10:00:00Z"
}
}/api/auth/risk/rules/[id]Requires: manage:risk_rulesAktualisiert den Namen, die Bedingung, die Aktion, den Score-Modifier oder den aktiven Status einer Risikoregel.
Anfrage-Body
{
"name": "Require MFA for new countries (aktualisiert)",
"scoreModifier": 50,
"isActive": true
}/api/auth/risk/rules/[id]Requires: manage:risk_rulesLöscht eine Risikoregel. Tritt sofort beim nächsten Anmeldeversuch in Kraft.
Erfolgsantwort
{
"ok": true,
"data": { "deleted": true }
}ACR und AMR in Tokens
Wenn adaptives MFA eine Step-up-Authentifizierung auslöst, enthält die ausgestellte JWT acr- und amr-Claims, die nachgelagerte Dienste zur Überprüfung der Authentifizierungsstärke verwenden können:
{
"sub": "usr_abc123",
"acr": "urn:auris:acr:mfa",
"amr": ["pwd", "otp"],
"iat": 1708521200,
"exp": 1708522100
}| Claim | Beschreibung |
|---|---|
acr | Authentication Context Class Reference. Werte: urn:auris:acr:pwd (nur Passwort), urn:auris:acr:mfa (Passwort + zweiter Faktor), urn:auris:acr:strong (Passwort + starker zweiter Faktor wie WebAuthn) |
amr | Authentication Methods References. Array der verwendeten Methoden: pwd, otp (TOTP), sms, webauthn, social, magic_link, sso |
Ressourcenserver können für sensible Operationen ein Mindest-acr-Niveau erfordern, indem sie die JWT-Claims vor der Anfrageverarbeitung prüfen.
Berechtigungsreferenz
| Berechtigung | Beschreibung |
|---|---|
manage:device_codes | Konfiguration des Device Authorization Flow verwalten |
impersonate:users | Tokens für Impersonierung austauschen (als ein anderer Benutzer agieren) |
delegate:tokens | Tokens für Delegation austauschen (im Namen eines anderen Benutzers agieren) |
manage:dpop_config | DPoP-Einstellungen für Anwendungen konfigurieren |
manage:ciba_config | CIBA-Einstellungen und Benachrichtigungsendpunkte konfigurieren |
view:risk_assessments | Risikobewertungsprotokolle und Bewertungsdetails anzeigen |
manage:risk_rules | Benutzerdefinierte Risikoregeln erstellen, aktualisieren und löschen |
manage:advanced_oauth | Vollzugriff auf alle erweiterten OAuth-Konfigurationen |
Alle erweiterten OAuth-Funktionen erfordern eine explizite Aktivierung für jede Anwendung. Die Anwendungseinstellungen in der Auris-Konsole enthalten Schalter für Device Flow, Token Exchange, DPoP und CIBA. Die entsprechenden enable*-Flags im Anwendungsmodell steuern die Verfügbarkeit.
Verwandte Themen
- DPoP (Proof of Possession) — Funktionsweise der DPoP-Proof-Validierung
- Device Authorization Flow — Details zum Device-Flow-Protokoll
- CIBA (Backchannel Auth) — CIBA-Protokollarchitektur
- Token Exchange (RFC 8693) — Token-Exchange-Protokolldetails
- DPoP implementieren — Schritt-für-Schritt-DPoP-Integration
- Device Authorization Flow — Device-Flow-Integrationshandbuch
- CIBA-Leitfaden — CIBA-Integrationsanleitung
- Token Exchange — Leitfaden für Impersonierung und Delegation
- Erweitertes OAuth2 — Erweiterte OAuth2-Funktionen über die Konsole konfigurieren