Skip to content

Commit 02b323e

Browse files
committed
Fix no id_token_hint in OIDC logout
1 parent 8e20a89 commit 02b323e

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

src/store/actions/managementActions.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,11 +517,15 @@ export const startMGMTListeners = (): AppThunk<Promise<void>> => async (
517517
const { host, protocol } = new URL(url);
518518

519519
if (origin && origin === `${protocol}//${host}`) {
520-
const { data: token } = data;
520+
const { data: token, idToken } = data;
521521

522522
await (await managementService).authentication.setAccessToken(token);
523523
await (await managementService).reAuthenticate();
524524

525+
if (idToken) {
526+
localStorage.setItem('oidcIdToken', idToken);
527+
}
528+
525529
dispatch(updateLoginState(token));
526530

527531
// Populate management.username from OIDC user data

src/store/actions/permissionsActions.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,10 @@ export const logout = (): AppThunk<Promise<void>> => async (
179179

180180
const tenantId = await dispatch(getTenantFromFqdn(window.location.hostname));
181181

182+
const idToken = localStorage.getItem('oidcIdToken');
183+
184+
localStorage.removeItem('oidcIdToken');
185+
182186
await (await managementService).authentication.removeAccessToken();
183187

184188
dispatch(updateLoginState());
@@ -192,7 +196,13 @@ export const logout = (): AppThunk<Promise<void>> => async (
192196
return logger.error('logout() | no tenant found');
193197

194198
} else {
195-
window.open(`${config.managementUrl}/auth/logout?tenantId=${tenantId}`, 'logoutWindow');
199+
const params = new URLSearchParams({ tenantId: String(tenantId) });
200+
201+
if (idToken) {
202+
params.set('id_token_hint', idToken);
203+
}
204+
205+
window.open(`${config.managementUrl}/auth/logout?${params.toString()}`, 'logoutWindow');
196206
}
197207
};
198208

src/store/actions/startActions.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,15 @@ export const startListeners = (): AppThunk<Promise<void>> => async (
306306
const { host, protocol } = new URL(url);
307307

308308
if (origin && origin === `${protocol}//${host}`) {
309-
const { data: token } = data;
309+
const { data: token, idToken } = data;
310310

311311
await (await managementService).authentication.setAccessToken(token);
312312
await (await managementService).reAuthenticate();
313313

314+
if (idToken) {
315+
localStorage.setItem('oidcIdToken', idToken);
316+
}
317+
314318
dispatch(updateLoginState(token));
315319

316320
// Populate management.username from OIDC user data

0 commit comments

Comments
 (0)