fix(auth): ensure id_token is cleared and set during SSO exchange for Keycloak logout

This commit is contained in:
2026-05-14 12:15:37 -05:00
parent 0ed350ca11
commit 7a7e8a67a3

View File

@@ -29,6 +29,7 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
const { clearAccessTokenCookies } = await import('$lib/server/access-token-cookie');
clearAccessTokenCookies(cookies);
cookies.delete('refresh_token', { path: '/' });
cookies.delete('id_token', { path: '/' });
cookies.delete('active_company_id', { path: '/' });
}
@@ -148,6 +149,18 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
});
}
// id_token — requerido para id_token_hint en el logout de Keycloak.
// Puede venir del refresh proactivo o del exchange original.
if (typeof tokens.id_token === 'string') {
cookies.set('id_token', tokens.id_token, {
path: '/',
httpOnly: true,
secure: isProduction,
sameSite: 'lax',
maxAge: 60 * 60 * 24 * 7,
});
}
// sso_tenant_id — HttpOnly cookie con el tenant seleccionado.
// El backend lo pasa como X-Tenant-Override en Hub /auth/me para que
// devuelva el tenant correcto aunque el KC token tenga otro tenant baked in.