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:
Harlekin
2026-09-01 19:37:09 +02:00
parent e14868b5ea
commit 3c3b71d175
5 changed files with 72 additions and 11 deletions
+4 -1
View File
@@ -27,6 +27,9 @@ export default defineConfig({
url: `${baseURL}/api/health`,
reuseExistingServer: !process.env.CI,
timeout: 180_000,
env: { PORT: String(PORT), HOSTNAME: '127.0.0.1' },
// APP_URL muss der Testserver kennen: Auth.js baut daraus die
// redirect_uri, und die wird geprüft. Ohne sie fiele sie auf den
// Request-Origin zurück und die Zusicherung wäre wertlos.
env: { PORT: String(PORT), HOSTNAME: '127.0.0.1', APP_URL: baseURL },
},
})