Zum Inhalt springen

Custom OAuth Provider

Du kannst jeden OAuth 2.0-kompatiblen Provider integrieren.

Dein OAuth-Provider muss unterstützen:

  • Authorization Code Grant Flow
  • Access Token Endpoint
  • User Info Endpoint (für Profildaten)
Terminal-Fenster
# Provider auf "custom" setzen
wrangler secret put OAUTH_PROVIDER
# Eingabe: custom
# OAuth Credentials von deinem Provider
wrangler secret put OAUTH_CLIENT_ID
# Eingabe: deine-client-id
wrangler secret put OAUTH_CLIENT_SECRET
# Eingabe: dein-client-secret
# Callback URL
wrangler secret put OAUTH_REDIRECT_URI
# Eingabe: https://auth.deine-domain.de/auth/callback

Du musst zusätzlich die Provider-URLs konfigurieren:

Terminal-Fenster
# Authorization Endpoint
wrangler secret put OAUTH_AUTHORIZE_URL
# Beispiel: https://provider.com/oauth/authorize
# Token Endpoint
wrangler secret put OAUTH_TOKEN_URL
# Beispiel: https://provider.com/oauth/token
# User Info Endpoint
wrangler secret put OAUTH_USER_INFO_URL
# Beispiel: https://provider.com/api/user

Für Custom Provider musst du möglicherweise den Code in src/worker.js anpassen:

Passe die Funktion zum Abrufen der Userdaten an:

// In src/worker.js
async 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
}

Hier ein Beispiel für Authentik als Custom Provider:

Terminal-Fenster
# Provider
wrangler secret put OAUTH_PROVIDER
# => custom
# Credentials
wrangler secret put OAUTH_CLIENT_ID
# => deine-authentik-client-id
wrangler secret put OAUTH_CLIENT_SECRET
# => dein-authentik-client-secret
# URLs
wrangler 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/callback

Für Keycloak:

Terminal-Fenster
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/userinfo

Nach der Konfiguration teste den OAuth-Flow:

  1. Initiiere Login
  2. Werde zu deinem Provider weitergeleitet
  3. Autorisiere die App
  4. Prüfe, dass du mit JWT Token zurückkommst

Lösung: Stelle sicher, dass die Redirect URI in deinem Provider konfiguriert ist.

Lösung: Passe das User Info Mapping an die Struktur deines Providers an.

Lösung: Prüfe, dass Client ID und Secret korrekt sind und der Token Endpoint erreichbar ist.