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:
+14
@@ -9,6 +9,20 @@ import { decideSignIn, SIGN_IN_ERRORS } from '@/lib/auth/signInPolicy'
|
||||
|
||||
export { SIGN_IN_ERRORS }
|
||||
|
||||
/**
|
||||
* Auth.js leitet die Callback-URL **nicht** aus dem Host-Header ab, sondern aus
|
||||
* `AUTH_URL`. Fehlt die Variable, bleibt die `redirect_uri` fest bei
|
||||
* `http://localhost:3000` — hinter dem Cloudflare Tunnel wäre die Anmeldung
|
||||
* damit kaputt, und zwar mit einer Fehlermeldung von Discord, die nicht auf die
|
||||
* Ursache zeigt.
|
||||
*
|
||||
* `APP_URL` ist ohnehin die kanonische öffentliche Adresse, deshalb wird sie
|
||||
* hier durchgereicht. Bewusst über `process.env` statt über `getEnv()`: dieses
|
||||
* Modul wird auch beim Bauen des Images geladen, wo noch keine vollständige
|
||||
* Konfiguration vorliegt.
|
||||
*/
|
||||
process.env.AUTH_URL ??= process.env.APP_URL
|
||||
|
||||
type DiscordProfile = {
|
||||
id: string
|
||||
username: string
|
||||
|
||||
Reference in New Issue
Block a user