From bd1145359331499f55219e38b3a95422e79be6fe Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Sat, 18 Jan 2025 08:18:19 +0000 Subject: [PATCH] fix: store oidc redirect_uri in session for parity --- app/routes/auth/oidc-callback.ts | 8 +++++++- app/routes/auth/oidc-start.ts | 1 + app/utils/sessions.server.ts | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/routes/auth/oidc-callback.ts b/app/routes/auth/oidc-callback.ts index e8a543d..d3dcf38 100644 --- a/app/routes/auth/oidc-callback.ts +++ b/app/routes/auth/oidc-callback.ts @@ -34,13 +34,19 @@ export async function loader({ request }: LoaderFunctionArgs) { const codeVerifier = session.get('oidc_code_verif'); const state = session.get('oidc_state'); const nonce = session.get('oidc_nonce'); + const redirectUri = session.get('oidc_redirect_uri'); if (!codeVerifier || !state || !nonce) { return send({ error: 'Missing OIDC state' }, { status: 400 }); } + // Reconstruct the redirect URI using the query parameters + // and the one we saved in the session + const flowRedirectUri = new URL(redirectUri); + flowRedirectUri.search = url.search; + const flowOptions = { - redirect_uri: request.url, + redirect_uri: flowRedirectUri.toString(), codeVerifier, state, nonce: nonce === '' ? undefined : nonce, diff --git a/app/routes/auth/oidc-start.ts b/app/routes/auth/oidc-start.ts index 4115629..afff2df 100644 --- a/app/routes/auth/oidc-start.ts +++ b/app/routes/auth/oidc-start.ts @@ -30,6 +30,7 @@ export async function loader({ request }: LoaderFunctionArgs) { session.set('oidc_code_verif', data.codeVerifier); session.set('oidc_state', data.state); session.set('oidc_nonce', data.nonce); + session.set('oidc_redirect_uri', redirectUri) return redirect(data.url, { status: 302, diff --git a/app/utils/sessions.server.ts b/app/utils/sessions.server.ts index adfbbd2..9a50af8 100644 --- a/app/utils/sessions.server.ts +++ b/app/utils/sessions.server.ts @@ -5,6 +5,7 @@ export type SessionData = { oidc_state: string; oidc_code_verif: string; oidc_nonce: string; + oidc_redirect_uri: string; agent_onboarding: boolean; user: { subject: string;