diff --git a/src/utils/isTokenValid/isIDTokenValid.test.ts b/src/utils/isTokenValid/isIDTokenValid.test.ts index 7e57ca1..04f7323 100644 --- a/src/utils/isTokenValid/isIDTokenValid.test.ts +++ b/src/utils/isTokenValid/isIDTokenValid.test.ts @@ -115,6 +115,21 @@ describe('isIDToken valid', () => { ); }); + test("Extra aud values don't throw", () => { + expect( + isTokenValid( + { + header, + payload: { + ...idTokenStub, + aud: ['https://account.acme.com', '123456789'] + } + }, + config + ) + ).toBe(true); + }); + test('Throw error if token expired', () => { expect(() => { isTokenValid( diff --git a/src/utils/isTokenValid/isTokenValid.ts b/src/utils/isTokenValid/isTokenValid.ts index f65efc5..863fe92 100644 --- a/src/utils/isTokenValid/isTokenValid.ts +++ b/src/utils/isTokenValid/isTokenValid.ts @@ -29,11 +29,13 @@ const isTokenValid = (token: any, config: any) => { throw new Error('(aud) claim must be an array'); } - if ( - !token.payload.aud.every((element: string) => - config.aud.includes(element) - ) - ) { + const configAud = config.aud.split(' '); + + const allConfigAudExistInPayload = configAud.every((element: string) => + token.payload.aud.includes(element) + ); + + if (!allConfigAudExistInPayload) { throw new Error( `(aud) claim mismatch. Expected: "${ config.aud