Authn.tech
Startseite
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • Alle Tools
  • JWT dekodieren
  • JWT signieren
  • JWK erzeugen
  • JWK → PEM
  • PEM → JWK
  • PKCE erzeugen
  • OIDC Discovery
  • TOTP
  • WebAuthn
  • SAML-Codec
  • SAML Metadata
  • SAML Response
  • X.509-Zertifikat
  • PEM prüfen
  • Base64URL
  • LDAP-Filter
  • Übersicht & Rollen
  • OIDC Mock
  • SAML Mock
  • Mail-Server
  • LDAP-Verzeichnis
  • OIDC-Login-Demo
  • SAML-Login-Demo
  • 简体中文
  • English
  • Deutsch
GitHub
Startseite
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • Alle Tools
  • JWT dekodieren
  • JWT signieren
  • JWK erzeugen
  • JWK → PEM
  • PEM → JWK
  • PKCE erzeugen
  • OIDC Discovery
  • TOTP
  • WebAuthn
  • SAML-Codec
  • SAML Metadata
  • SAML Response
  • X.509-Zertifikat
  • PEM prüfen
  • Base64URL
  • LDAP-Filter
  • Übersicht & Rollen
  • OIDC Mock
  • SAML Mock
  • Mail-Server
  • LDAP-Verzeichnis
  • OIDC-Login-Demo
  • SAML-Login-Demo
  • 简体中文
  • English
  • Deutsch
GitHub
  • OAuth 2.0

    • OAuth 2.0 Übersicht
    • Kernkonzepte
    • Typische Flows
    • Typische Parameter und Antwort-Referenz

Typische Parameter und Antwort-Referenz

Diese Seite ist ein Quick-Reference Handbuch, das Anfrage-Parameter, Antwort-Felder und Fehler-Codes aller Endpoints zusammenfasst. Für Flow-Kontext siehe Typische Flows, Konzept-Erklärungen siehe Kernkonzepte.

Authorization Endpoint Anfrage-Parameter

GET /authorize, Parameter in Query String (Werte müssen URL-kodiert sein):

ParameterErforderlichErklärung
response_typeErforderlichAuthorization Code Flow ist code (token = Implicit, deprecated)
client_idErforderlichClient-Identifikator erhalten bei Registrierung
redirect_uriBedingt erforderlichCallback-Adresse, muss zeichenweise exakt mit Registrierungswert übereinstimmen; erforderlich wenn mehrere URIs registriert
scopeEmpfohlenLeerzeichen-getrennte Berechtigungs-Bereichs-Liste (nach URL-Kodierung ist Leerzeichen %20 oder +)
stateEmpfohlen (sollte in Praxis erforderlich sein)Cryptographisch zufälliger Wert, wird unverändert bei Callback zurückgegeben, Client muss validieren, schützt CSRF
code_challengeEmpfohlen (OAuth 2.1 erforderlich)PKCE Challenge-Wert: BASE64URL(SHA256(code_verifier))
code_challenge_methodEmpfohlenVerwenden Sie S256; plain nur für Legacy-Kompatibilität, nicht verwenden

Authorization erfolgreiche Callback: {redirect_uri}?code={auth_code}&state={original_value}.

Token Endpoint Anfrage-Parameter

POST /token, Content-Type: application/x-www-form-urlencoded. Confidential Client benötigt Client-Authentifizierung (z.B. Authorization: Basic ...); Public Client reicht client_id im Body.

grant_type=authorization_code

ParameterErforderlichErklärung
grant_typeErforderlichauthorization_code
codeErforderlichAuthorization Code vom Authorization Endpoint, One-Time Use
redirect_uriBedingt erforderlichWenn in Autorisierungs-Anfrage enthalten, muss enthalten sein und Wert komplett identisch
code_verifierPKCE erforderlichOriginal zufällige Zeichenkette zum Erzeugen Challenge (43–128 Zeichen)
client_idPublic Client erforderlichZur Client-Identifikation ohne Client-Authentifizierung

grant_type=refresh_token

ParameterErforderlichErklärung
grant_typeErforderlichrefresh_token
refresh_tokenErforderlichZuvor signiertes Refresh Token
scopeOptionalKann nur reduzieren, nicht erweitern über Original-Autorisierungs-Umfang

grant_type=client_credentials

ParameterErforderlichErklärung
grant_typeErforderlichclient_credentials
scopeOptionalAngeforderte Berechtigungs-Bereiche

(Muss Client-Authentifizierung verwenden, nur für Confidential Client.)

grant_type=urn:ietf:params:oauth:grant-type:device_code

ParameterErforderlichErklärung
grant_typeErforderlichurn:ietf:params:oauth:grant-type:device_code
device_codeErforderlichDevice Code vom Device Authorization Endpoint
client_idPublic Client erforderlichClient-Identifikator

Token erfolgreiche Antwort-Felder

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA",
  "scope": "calendar.read profile"
}
FeldErforderlichErklärung
access_tokenErforderlichAccess Token, Client sollte als opake Zeichenkette behandeln
token_typeErforderlichNormalerweise Bearer; case-insensitiv (könnte bearer zurückgeben), beim Vergleich beachten
expires_inEmpfohlenGültigkeitsdauer in Sekunden; Client sollte vorzeitig (z.B. 30 Sekunden vorher) als abgelaufen betrachten statt nur bei 401 handeln
refresh_tokenOptionalRefresh Token; Client Credentials Mode gibt nicht aus; bei aktivierter Rotation wird neuer Wert bei jeder Erneuerung zurückgegeben
scopeBedingt erforderlichWenn tatsächlich gewährter Scope von angefordert abweicht, muss zurückgegeben werden; Client sollte dies als Quelle der Wahrheit nutzen

Antwort muss Cache-Control: no-store enthalten, verhindert Token-Caching.

Fehler-Antworten

Token Endpoint Fehler (RFC 6749 §5.2)

HTTP Status normalerweise 400 (Client-Authentifizierung-Fehler ist 401), JSON Body:

HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Authorization code is expired or already used"
}
Fehler-CodeBedeutungHäufige Auslöser
invalid_requestAnfrage fehlende Parameter, doppelte Parameter oder Format-FehlerFehlender grant_type; Body nicht Form-kodiert, sondern JSON gesendet
invalid_clientClient-Authentifizierung fehlgeschlagen (HTTP 401)client_secret falsch/rotiert; Authentifizierungs-Methode passt nicht zu Registrierungs-Config
invalid_grantAutorisierungs-Anmeldedaten ungültigAuthorization Code abgelaufen/bereits verwendet; redirect_uri stimmt nicht überein; Refresh Token widerrufen oder rotiert; PKCE Verifier Validierung fehlgeschlagen
unauthorized_clientClient nicht berechtigt, diese grant_type zu verwendenClient-Registrierung hat diese Grant-Type nicht aktiviert
unsupported_grant_typeAS unterstützt diese grant_type nichtTippfehler; AS hat Device Flow etc nicht aktiviert
invalid_scopeScope ungültig, unbekannt oder außerhalb BereichNicht-existenter Scope angefordert; Erneuerung versucht zu erweitern

error_description (menschenlesbarer Text) und error_uri (Dokumentations-Link) sind optional, verlassen Sie sich nicht auf deren Inhalte für Code-Logik.

Authorization Endpoint Fehler (RFC 6749 §4.1.2.1)

Fehler werden durch Redirect zurück zu redirect_uri zurückgegeben: {redirect_uri}?error=access_denied&state=.... (Aber wenn client_id oder redirect_uri selbst ungültig, darf AS nicht umleiten, zeigen Sie direkt Fehlerseite.)

Fehler-CodeBedeutung
invalid_requestAnfrage-Parameter fehlend oder ungültig
unauthorized_clientClient nicht berechtigt diese response_type zu verwenden
access_deniedBenutzer oder AS lehnt Autorisierung ab (Benutzer klickt „Ablehnen")
unsupported_response_typeNicht unterstützte response_type
invalid_scopeAngeforderte Scope ungültig
server_errorAS interner Fehler (equiv 500, aber durch Redirect mitgeliefert)
temporarily_unavailableAS überbelastet oder in Wartung (equiv 503)

Device Flow Polling spezieller Fehler (RFC 8628)

Fehler-CodeBedeutungClient-Aktion
authorization_pendingBenutzer hat Autorisierung noch nicht abgeschlossenWeiter polling nach interval
slow_downPolling zu schnellIntervall +5 Sekunden dann weiter
expired_tokendevice_code abgelaufenNeue Device Authorization Anfrage
access_deniedBenutzer lehnt Autorisierung abBeenden, Benutzer informieren

grant_type Überblick

grant_type WertNameStatusSzenario
authorization_codeAuthorization Code FlowEmpfohlen (muss mit PKCE)Alle Szenarien mit Benutzer-Beteiligung
client_credentialsClient Credentials FlowEmpfohlenM2M, Service-zu-Service Aufrufe
refresh_tokenRefresh TokenEmpfohlenToken-Erneuerung
urn:ietf:params:oauth:grant-type:device_codeDevice AuthorizationEmpfohlen (wenn anwendbar)Eingabe-begrenzte Geräte
urn:ietf:params:oauth:grant-type:jwt-bearerJWT Bearer (RFC 7523)SpezialisiertVerbundene Identität, Service-Konto Impersonation
urn:ietf:params:oauth:grant-type:token-exchangeToken Exchange (RFC 8693)SpezialisiertMicroservice Token-Delegation/Downgrade
passwordPasswort FlowDeprecatedVerwenden Sie Authorization Code + PKCE
(response_type=token)Implicit (nicht grant_type, Authorization Endpoint direkt Token)DeprecatedVerwenden Sie Authorization Code + PKCE

Bearer Token drei Transport-Methoden (RFC 6750)

MethodeBeispielBewertung
Authorization HeaderAuthorization: Bearer 2YotnFZFEjr1zCsicMWpAAEinzige Empfehlung. Nicht ins Log/Chronik, unterstützt beliebige HTTP Methoden
Form Body Parameteraccess_token=2Yotn... (Form-kodiert Body)Nicht empfohlen. Nur für Legacy-Szenarien ohne Header-Unterstützung
URL Query ParameterGET /api?access_token=2Yotn...Verboten. Token in Zugriffs-Log, Browser-Chronik, Referer Header, RFC 6750 selbst nicht empfohlen, RFC 9700 verbietet explizit

RS lehnt Anfrage ab sollte WWW-Authenticate Header zurückgeben:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token", error_description="The access token expired"
RS Fehler-CodeHTTP StatusBedeutung
invalid_request400Anfrage-Format-Fehler (z.B. zwei Token)
invalid_token401Token abgelaufen, widerrufen oder ungültig → Client sollte erneuern oder Neu-Autorisierung
insufficient_scope403Token gültig aber Scope nicht ausreichend

Troubleshooting Quick Reference

SymptomWahrscheinlichste Ursache
Authorization Endpoint zeigt direkt Fehlerseite, kein Redirectclient_id existiert nicht, oder redirect_uri passt nicht zu Registrierungswert (überprüfen Sie Protokoll, Port, Trailing Slash, Groß-/Kleinschreibung)
Callback meldet error=access_deniedBenutzer lehnt Autorisierung ab; oder AS-Richtlinie lehnt ab (Benutzer hat keine Berechtigung, Client ist deaktiviert)
Token-Austausch meldet invalid_grantAuthorization Code bereits verwendet (Callback zweimal ausgelöst?) oder abgelaufen; redirect_uri passt nicht zu Autorisierungs-Anfrage; PKCE Verifier passt nicht zu Challenge
Token-Austausch meldet invalid_client (401)Secret falsch oder rotiert; verwendet client_secret_post aber AS akzeptiert nur Basic (oder umgekehrt); Basic Header nicht URL-kodiert für id/secret
Meldet invalid_requestBody verwendete JSON statt application/x-www-form-urlencoded; Parameter doppelt übermittelt
Erneuerung meldet invalid_grantRefresh Token abgelaufen/widerrufen; Rotation-Szenario hat altes Token verwendet (Concurrency-Schutz nicht gesperrt); Benutzer änderte Passwort triggert globalen Widerruf
RS gibt 401 invalid_token zurückAccess Token abgelaufen → erneuern; Uhr-Versatz führt zu JWT nbf/exp Validierungs-Fehler; RS konfigurierter Issuer/Audience passt nicht
RS gibt 403 insufficient_scope zurückBei Autorisierung diese Scope nicht angefordert, oder Benutzer hat nicht genehmigt; überprüfen Sie tatsächliche zurückgegebene scope in Token-Antwort
Device Flow bleibt immer authorization_pendingBenutzer hat Autorisierung nicht abgeschlossen; überprüfen Sie angezeigte verification_uri und user_code richtig
Gelegentlich Erfolg/FehlerMulti-Instanz AS Sitzung/Speicher nicht synchron; Lastverteilung hat zu anderem Umfeld umgeleitet; Client Uhr-Drift

Verwandte Seiten

  • OAuth 2.0 Übersicht
  • Kernkonzepte
  • Typische Flows
Zuletzt aktualisiert: 06.07.26, 07:49
Mitwirkende: linux, Claude Opus 4.8
Prev
Typische Flows