Zum Inhalt springen

OAuth Übersicht

OAuth Auth Cloudflare unterstützt mehrere OAuth-Provider für die Benutzerauthentifizierung.

  • GitHub OAuth: GitHub-Konten zur Anmeldung verwenden
  • Google OAuth: Google-Konten zur Anmeldung verwenden
  • Custom OAuth: Jeden OAuth 2.0-kompatiblen Provider integrieren

Das Projekt implementiert den Authorization Code Grant Flow mit PKCE (Proof Key for Code Exchange) für zusätzliche Sicherheit.

1. User → Frontend: Klickt auf "Login"
2. Frontend → Auth Server: Initiiert OAuth-Flow
3. Auth Server → OAuth Provider: Redirect zu Login-Seite
4. User → OAuth Provider: Authentifizierung
5. OAuth Provider → Auth Server: Callback mit Authorization Code
6. Auth Server → OAuth Provider: Tauscht Code gegen Access Token
7. Auth Server → User DB: Erstellt/aktualisiert Benutzerprofil
8. Auth Server → Frontend: Redirect mit JWT Token
9. Frontend: Speichert Token, zeigt geschützten Inhalt

PKCE verhindert Authorization Code Interception Angriffe:

  1. Client generiert zufälligen code_verifier
  2. Client erstellt code_challenge = SHA256(code_verifier)
  3. Client sendet code_challenge bei Authorization Request
  4. Nach Callback sendet Client code_verifier
  5. Server validiert: SHA256(code_verifier) == code_challenge

Der state Parameter verhindert CSRF-Angriffe:

  • Zufälliger Token wird vor OAuth-Redirect generiert
  • Im Callback wird validiert, dass der State übereinstimmt
  • State wird in Cloudflare KV mit kurzer TTL gespeichert

Nach erfolgreicher OAuth-Authentifizierung wird ein JWT Token generiert:

{
"userId": "github:123456",
"name": "Max Mustermann",
"email": "max@example.com",
"provider": "github",
"iat": 1234567890,
"exp": 1234571490
}

OAuth-Provider werden über Umgebungsvariablen konfiguriert:

Terminal-Fenster
# Provider auswählen (github, google, oder custom)
wrangler secret put OAUTH_PROVIDER
# OAuth Credentials
wrangler secret put OAUTH_CLIENT_ID
wrangler secret put OAUTH_CLIENT_SECRET
wrangler secret put OAUTH_REDIRECT_URI