Callback-URL aus APP_URL ableiten
Auth.js baut die redirect_uri nicht aus dem Host-Header, sondern aus AUTH_URL. Ohne die Variable bleibt sie fest auf http://localhost:3000 — hinter dem Cloudflare Tunnel wäre die Anmeldung damit kaputt gewesen, und zwar mit einer Fehlermeldung von Discord, die nicht auf die Ursache zeigt. APP_URL ist ohnehin die kanonische öffentliche Adresse und wird jetzt durchgereicht. Nachweis mit dem gebauten Standalone-Server: mit gesetztem APP_URL kommt https://afis.example.de/api/auth/callback/discord heraus, ohne fällt sie auf localhost zurück. Ein E2E-Test hält Scope identify, state, PKCE mit S256 und den Pfad der Callback-URL fest. Nebenbefund, eigenständig behoben: loadEnvFromRepoRoot hat gesetzte Umgebungsvariablen mit den Werten der Entwicklungs-.env überschrieben. process.loadEnvFile tut das von sich aus. Eine .env ist ein Rückfall für die lokale Entwicklung, kein Vorrang vor dem, was der Aufrufer ausdrücklich mitgibt — sonst überschreibt sie etwa die APP_URL eines Testlaufs und die Fehlersuche führt weit weg von der Ursache.
This commit is contained in:
@@ -15,6 +15,9 @@ DATABASE_URL=postgresql://afis:hier-ein-langes-zufaelliges-passwort@pgbouncer:64
|
||||
DIRECT_DATABASE_URL=postgresql://afis:hier-ein-langes-zufaelliges-passwort@db:5432/afis
|
||||
|
||||
# --- Anwendung ----------------------------------------------------------------
|
||||
# Die öffentliche Adresse der Anwendung. Auth.js baut daraus die redirect_uri
|
||||
# für Discord; sie muss zeichengenau im Developer Portal hinterlegt sein als
|
||||
# <APP_URL>/api/auth/callback/discord
|
||||
APP_URL=https://afis.example.de
|
||||
# 32+ Zeichen. Erzeugen mit: openssl rand -base64 48
|
||||
AUTH_SECRET=hier-ein-langes-zufaelliges-geheimnis-mit-mindestens-32-zeichen
|
||||
|
||||
Reference in New Issue
Block a user