OAuth 2.0
Authorization Code Flow
Implementieren Sie Autorisierung, PKCE, Code-Austausch, Refresh und Logout sicher.
1. Transaktionswerte erzeugen
Erzeugen Sie für jeden Anmeldeversuch:
- einen hochentropischen
state-Wert, der die Anfrage mit dem Callback verknüpft - einen
nonce-Wert, der die Identitätsaussagen mit der Anfrage verknüpft - einen hochentropischen PKCE-
code_verifier - eine
code_challenge, berechnet als Base64URL-codierter SHA-256-Hash des Verifiers
Speichern Sie die Werte in einer kurzlebigen, serverseitig geschützten Transaktion.
2. Zur Autorisierung weiterleiten
GET /oauth2/authorize? response_type=code& client_id=YOUR_CLIENT_ID& redirect_uri=https%3A%2F%2Fexample.com%2Fauth%2Fdocid%2Fcallback& scope=openid%20profile%20email& state=RANDOM_STATE& nonce=RANDOM_NONCE& code_challenge=PKCE_CHALLENGE& code_challenge_method=S2563. Callback validieren
Ein erfolgreicher Callback enthält code und state. Vergleichen Sie state nach Möglichkeit mit einer zeitkonstanten Vergleichsfunktion mit dem gespeicherten Wert. Lehnen Sie fehlende, wiederverwendete, abgelaufene oder nicht übereinstimmende Transaktionen ab.
Ein nicht erfolgreicher Callback enthält error und kann error_description enthalten. Protokollieren Sie ausschließlich eine sichere interne Korrelations-ID und zeigen Sie der Nutzerin oder dem Nutzer eine verständliche Meldung mit einer Möglichkeit zur Wiederholung an.
4. Code austauschen
Senden Sie serverseitig eine Formularanfrage:
POST /oauth2/tokenContent-Type: application/x-www-form-urlencodedAuthorization: Basic BASE64_CLIENT_ID_AND_SECRET grant_type=authorization_code&code=RETURNED_CODE&redirect_uri=https%3A%2F%2Fexample.com%2Fauth%2Fdocid%2Fcallback&code_verifier=ORIGINAL_PKCE_VERIFIERClient-Zugangsdaten können, sofern konfiguriert, auch im Form-Body akzeptiert werden. HTTP Basic trennt die Zugangsdaten jedoch von den Grant-Parametern.
5. Benutzerinformationen abrufen
GET /oauth2/userinfoAuthorization: Bearer ACCESS_TOKENErstellen Sie aus der Antwort eine lokale Website-Session und löschen Sie anschließend die einmalige OAuth-Transaktion.
Token aktualisieren und widerrufen
Tauschen Sie ein gültiges Refresh Token mit grant_type=refresh_token unter /oauth2/token aus. Speichern Sie Refresh Tokens ausschließlich auf dem Server. Wenn die Integration ein Token nicht mehr benötigt, widerrufen Sie es unter /oauth2/revoke und machen Sie die lokale Session ungültig.