Custom OAuth Provider
Custom OAuth Provider
Abschnitt betitelt „Custom OAuth Provider“Du kannst jeden OAuth 2.0-kompatiblen Provider integrieren.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Dein OAuth-Provider muss unterstützen:
- Authorization Code Grant Flow
- Access Token Endpoint
- User Info Endpoint (für Profildaten)
Konfiguration
Abschnitt betitelt „Konfiguration“Secrets setzen
Abschnitt betitelt „Secrets setzen“# Provider auf "custom" setzenwrangler secret put OAUTH_PROVIDER# Eingabe: custom
# OAuth Credentials von deinem Providerwrangler secret put OAUTH_CLIENT_ID# Eingabe: deine-client-id
wrangler secret put OAUTH_CLIENT_SECRET# Eingabe: dein-client-secret
# Callback URLwrangler secret put OAUTH_REDIRECT_URI# Eingabe: https://auth.deine-domain.de/auth/callbackProvider-spezifische URLs
Abschnitt betitelt „Provider-spezifische URLs“Du musst zusätzlich die Provider-URLs konfigurieren:
# Authorization Endpointwrangler secret put OAUTH_AUTHORIZE_URL# Beispiel: https://provider.com/oauth/authorize
# Token Endpointwrangler secret put OAUTH_TOKEN_URL# Beispiel: https://provider.com/oauth/token
# User Info Endpointwrangler secret put OAUTH_USER_INFO_URL# Beispiel: https://provider.com/api/userCode-Anpassungen
Abschnitt betitelt „Code-Anpassungen“Für Custom Provider musst du möglicherweise den Code in src/worker.js anpassen:
User Info Mapping
Abschnitt betitelt „User Info Mapping“Passe die Funktion zum Abrufen der Userdaten an:
// In src/worker.jsasync function getUserInfo(accessToken, provider) { if (provider === 'custom') { const response = await fetch(env.OAUTH_USER_INFO_URL, { headers: { 'Authorization': `Bearer ${accessToken}`, }, });
const data = await response.json();
// Mappe die Provider-spezifischen Felder auf das Standard-Format return { userId: `custom:${data.id}`, name: data.display_name || data.name, email: data.email, avatar: data.avatar_url || data.picture, provider: 'custom', }; } // ... bestehender Code für andere Provider}Beispiel: Authentik
Abschnitt betitelt „Beispiel: Authentik“Hier ein Beispiel für Authentik als Custom Provider:
# Providerwrangler secret put OAUTH_PROVIDER# => custom
# Credentialswrangler secret put OAUTH_CLIENT_ID# => deine-authentik-client-id
wrangler secret put OAUTH_CLIENT_SECRET# => dein-authentik-client-secret
# URLswrangler secret put OAUTH_AUTHORIZE_URL# => https://authentik.deine-domain.de/application/o/authorize/
wrangler secret put OAUTH_TOKEN_URL# => https://authentik.deine-domain.de/application/o/token/
wrangler secret put OAUTH_USER_INFO_URL# => https://authentik.deine-domain.de/application/o/userinfo/
wrangler secret put OAUTH_REDIRECT_URI# => https://auth.deine-domain.de/auth/callbackBeispiel: Keycloak
Abschnitt betitelt „Beispiel: Keycloak“Für Keycloak:
wrangler secret put OAUTH_AUTHORIZE_URL# => https://keycloak.deine-domain.de/realms/myrealm/protocol/openid-connect/auth
wrangler secret put OAUTH_TOKEN_URL# => https://keycloak.deine-domain.de/realms/myrealm/protocol/openid-connect/token
wrangler secret put OAUTH_USER_INFO_URL# => https://keycloak.deine-domain.de/realms/myrealm/protocol/openid-connect/userinfoTesting
Abschnitt betitelt „Testing“Nach der Konfiguration teste den OAuth-Flow:
- Initiiere Login
- Werde zu deinem Provider weitergeleitet
- Autorisiere die App
- Prüfe, dass du mit JWT Token zurückkommst
Troubleshooting
Abschnitt betitelt „Troubleshooting“”Invalid redirect_uri”
Abschnitt betitelt „”Invalid redirect_uri”“Lösung: Stelle sicher, dass die Redirect URI in deinem Provider konfiguriert ist.
User Info nicht korrekt
Abschnitt betitelt „User Info nicht korrekt“Lösung: Passe das User Info Mapping an die Struktur deines Providers an.
Token Exchange schlägt fehl
Abschnitt betitelt „Token Exchange schlägt fehl“Lösung: Prüfe, dass Client ID und Secret korrekt sind und der Token Endpoint erreichbar ist.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- OAuth Übersicht - Mehr über OAuth-Flow
- API Endpoints - Verfügbare Endpoints