diff --git a/apps/web/src/utils/oidc/authorize.ts b/apps/web/src/utils/oidc/authorize.ts index 2e1420e32e..18bd910fc1 100644 --- a/apps/web/src/utils/oidc/authorize.ts +++ b/apps/web/src/utils/oidc/authorize.ts @@ -86,7 +86,7 @@ type CompleteOidcLoginResponse = { // refreshToken gained from OIDC token issuer, when falsy token cannot be refreshed refreshToken?: string; // idToken gained from OIDC token issuer - idToken: string; + idToken?: string; // this client's id as registered with the OIDC issuer clientId: string; // issuer used during authentication diff --git a/apps/web/src/utils/oidc/persistOidcSettings.ts b/apps/web/src/utils/oidc/persistOidcSettings.ts index 38426e79cb..63d4515869 100644 --- a/apps/web/src/utils/oidc/persistOidcSettings.ts +++ b/apps/web/src/utils/oidc/persistOidcSettings.ts @@ -25,10 +25,16 @@ const idTokenClaimsStorageKey = "mx_oidc_id_token_claims"; * @param idToken * @param idTokenClaims */ -export const persistOidcAuthenticatedSettings = (clientId: string, issuer: string, idToken: string): void => { +export const persistOidcAuthenticatedSettings = ( + clientId: string, + issuer: string, + idToken: string | undefined, +): void => { localStorage.setItem(clientIdStorageKey, clientId); localStorage.setItem(tokenIssuerStorageKey, issuer); - localStorage.setItem(idTokenStorageKey, idToken); + if (idToken) { + localStorage.setItem(idTokenStorageKey, idToken); + } }; /** diff --git a/apps/web/test/unit-tests/utils/oidc/persistOidcSettings-test.ts b/apps/web/test/unit-tests/utils/oidc/persistOidcSettings-test.ts index 5b81d142b0..86695b4c26 100644 --- a/apps/web/test/unit-tests/utils/oidc/persistOidcSettings-test.ts +++ b/apps/web/test/unit-tests/utils/oidc/persistOidcSettings-test.ts @@ -48,6 +48,13 @@ describe("persist OIDC settings", () => { expect(localStorage.setItem).toHaveBeenCalledWith("mx_oidc_token_issuer", issuer); expect(localStorage.setItem).toHaveBeenCalledWith("mx_oidc_id_token", idToken); }); + + it("should not set idToken in localStorage when idToken is undefined", () => { + persistOidcAuthenticatedSettings(clientId, issuer, undefined); + expect(localStorage.setItem).toHaveBeenCalledWith("mx_oidc_client_id", clientId); + expect(localStorage.setItem).toHaveBeenCalledWith("mx_oidc_token_issuer", issuer); + expect(localStorage.getItem("mx_oidc_id_token")).toBeFalsy(); + }); }); describe("getStoredOidcTokenIssuer()", () => {