From 6e56b70998f9f22ed78c56560feae47efbfc84e6 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jan 2024 20:34:53 +0000 Subject: [PATCH 1/3] [skip ci] Update to version 7.13.15 in package.json --- packages/oidc-client-service-worker/package.json | 2 +- packages/oidc-client-service-worker/src/version.ts | 2 +- packages/oidc-client/package.json | 2 +- packages/oidc-client/src/version.ts | 2 +- packages/react-oidc/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/oidc-client-service-worker/package.json b/packages/oidc-client-service-worker/package.json index aeab8c80c..061e2a422 100644 --- a/packages/oidc-client-service-worker/package.json +++ b/packages/oidc-client-service-worker/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client-service-worker", - "version": "7.13.14", + "version": "7.13.15", "type": "module", "private": false, "main": "dist/OidcServiceWorker.js", diff --git a/packages/oidc-client-service-worker/src/version.ts b/packages/oidc-client-service-worker/src/version.ts index f5cbf98b6..8e8511c92 100644 --- a/packages/oidc-client-service-worker/src/version.ts +++ b/packages/oidc-client-service-worker/src/version.ts @@ -1 +1 @@ -export default '7.13.14'; +export default '7.13.15'; diff --git a/packages/oidc-client/package.json b/packages/oidc-client/package.json index 1604d5671..352dd109f 100644 --- a/packages/oidc-client/package.json +++ b/packages/oidc-client/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/oidc-client", - "version": "7.13.14", + "version": "7.13.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", diff --git a/packages/oidc-client/src/version.ts b/packages/oidc-client/src/version.ts index f5cbf98b6..8e8511c92 100644 --- a/packages/oidc-client/src/version.ts +++ b/packages/oidc-client/src/version.ts @@ -1 +1 @@ -export default '7.13.14'; +export default '7.13.15'; diff --git a/packages/react-oidc/package.json b/packages/react-oidc/package.json index dbf74059b..551ee52da 100644 --- a/packages/react-oidc/package.json +++ b/packages/react-oidc/package.json @@ -1,6 +1,6 @@ { "name": "@axa-fr/react-oidc", - "version": "7.13.14", + "version": "7.13.15", "private": false, "type": "module", "main": "./dist/index.umd.cjs", From da88573ed9574f236b486eaf9b0302f9b387e503 Mon Sep 17 00:00:00 2001 From: GitHub Date: Tue, 16 Jan 2024 20:34:55 +0000 Subject: [PATCH 2/3] [skip ci] Generate changelog to version 7.13.15 --- CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5776d64c3..b862a4111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## 7.13.14 +## 7.13.15 + +- [c56cc84](https://github.com/AxaFrance/oidc-client/commit/c56cc842d8da427b2aa88eb71f7d63937ea3c363) - fix(react-oidc): missing console.log in useOidcFetch (release), 2024-01-16 by *Guillaume Chervet* + + +## v7.13.14 - [3a1883c](https://github.com/AxaFrance/oidc-client/commit/3a1883c343c55637aa1ce5d118cc2841c76d8752) - build(npm): bump react-router-dom from 6.20.1 to 6.21.1 (#1252), 2024-01-02 by *dependabot[bot]* @@ -314,8 +319,3 @@ - [04f4900](https://github.com/AxaFrance/oidc-client/commit/04f4900d672e954278e6835bc31c62e4bf8660de) - try fix (release), 2023-07-28 by *Guillaume Chervet* -## v6.26.2 - -- [d329ce0](https://github.com/AxaFrance/oidc-client/commit/d329ce0cb013f4877cb401c6ccef316077ce9d09) - fix(ci): add set to replace workspace* (release), 2023-07-28 by *Guillaume Chervet* - - From f2310bc917898b779a40edecf3dd73c21ec32b47 Mon Sep 17 00:00:00 2001 From: Guillaume Chervet Date: Thu, 25 Jan 2024 21:00:13 +0100 Subject: [PATCH 3/3] fix(oidc): parseJwt fails for some JWT because of wrong use of replace (release) (#1269) --- .../src/utils/__tests__/tokens.spec.ts | 17 ++++++++++++++++- .../src/utils/tokens.ts | 6 +++--- packages/oidc-client/src/parseTokens.spec.ts | 16 +++++++++++++++- packages/oidc-client/src/parseTokens.ts | 6 +++--- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts index 41435f4b2..b8559154b 100644 --- a/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts +++ b/packages/oidc-client-service-worker/src/utils/__tests__/tokens.spec.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it } from 'vitest'; import { OidcServerConfiguration } from '../../types'; -import { _hideTokens, extractTokenPayload, isTokensOidcValid, isTokensValid } from '..'; +import {_hideTokens, extractTokenPayload, isTokensOidcValid, isTokensValid, parseJwt} from '..'; import { OidcConfigBuilder, OidcServerConfigBuilder, TokenBuilder } from './testHelper'; describe('tokens', () => { @@ -31,6 +31,21 @@ describe('tokens', () => { }); describe('extractTokenPayload', () => { + + it('parseJwtShouldExtractData', async () => { + const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" + const result = parseJwt(claimsPart); + expect(result).toStrictEqual({ + "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", + "scope": "openid email profile", + "email_verified": true, + "name": "ƴǢÁìÇ 小名-ホルヘ", + "preferred_username": "testingcharacters@inventedmail.com", + "given_name": "ƴǢÁìÇ", + "family_name": "小名-ホルヘ" + }); + }); + it('can extract token payload', () => { const result = extractTokenPayload( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c', diff --git a/packages/oidc-client-service-worker/src/utils/tokens.ts b/packages/oidc-client-service-worker/src/utils/tokens.ts index 80a9157db..190416262 100644 --- a/packages/oidc-client-service-worker/src/utils/tokens.ts +++ b/packages/oidc-client-service-worker/src/utils/tokens.ts @@ -10,9 +10,9 @@ import { } from '../types'; import { countLetter } from './strings'; -function parseJwt(token: string) { +export const parseJwt = (payload: string) => { return JSON.parse( - b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/')), + b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/')), ); } function b64DecodeUnicode(str: string) { @@ -51,7 +51,7 @@ const extractTokenPayload = (token?: string) => { return null; } if (countLetter(token, '.') === 2) { - return parseJwt(token); + return parseJwt(token.split('.')[1]); } else { return null; } diff --git a/packages/oidc-client/src/parseTokens.spec.ts b/packages/oidc-client/src/parseTokens.spec.ts index 070bbeea6..e520d7b4a 100644 --- a/packages/oidc-client/src/parseTokens.spec.ts +++ b/packages/oidc-client/src/parseTokens.spec.ts @@ -1,6 +1,6 @@ import { describe, expect,it } from 'vitest'; -import {getValidTokenAsync, isTokensOidcValid, parseOriginalTokens} from "./parseTokens"; +import { getValidTokenAsync, isTokensOidcValid, parseJwt, parseOriginalTokens} from "./parseTokens"; describe('ParseTokens test Suite', () => { const currentTimeUnixSecond = new Date().getTime() / 1000; @@ -25,6 +25,20 @@ describe('ParseTokens test Suite', () => { }); }); + it('parseJwtShouldExtractData', async () => { + const claimsPart = "eyJzZXNzaW9uX3N0YXRlIjoiNzVjYzVlZDItZGYyZC00NTY5LWJmYzUtMThhOThlNjhiZTExIiwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoixrTHosOBw6zDhyDlsI_lkI0t44Ob44Or44OYIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdGluZ2NoYXJhY3RlcnNAaW52ZW50ZWRtYWlsLmNvbSIsImdpdmVuX25hbWUiOiLGtMeiw4HDrMOHIiwiZmFtaWx5X25hbWUiOiLlsI_lkI0t44Ob44Or44OYIn0" + const result = parseJwt(claimsPart); + expect(result).toStrictEqual({ + "session_state": "75cc5ed2-df2d-4569-bfc5-18a98e68be11", + "scope": "openid email profile", + "email_verified": true, + "name": "ƴǢÁìÇ 小名-ホルヘ", + "preferred_username": "testingcharacters@inventedmail.com", + "given_name": "ƴǢÁìÇ", + "family_name": "小名-ホルヘ" + }); + }); + const id_token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUwNWZkODljLTM4YzktNGI2Mi04ZjQ3LWI4MGQ0ZTNhYjYxNSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsInN1YiI6ImFkbWluIiwiYXVkIjoiM2FTbk5XUGxZQWQwOGVES3c1UUNpSWVMcWpIdHkxTTVzSGFzcDJDZWREcWYzbmJkZm8xUFo1cXhmbWoyaFhkUyIsImV4cCI6MTY5MDk4NzQ1NCwiYXV0aF90aW1lIjoxNjkwOTg2NTUxLCJpYXQiOjE2OTA5ODY1NTQsImFjciI6IjAiLCJhenAiOiIzYVNuTldQbFlBZDA4ZURLdzVRQ2lJZUxxakh0eTFNNXNIYXNwMkNlZERxZjNuYmRmbzFQWjVxeGZtajJoWGRTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGdyb3VwcyBvZmZsaW5lX2FjY2VzcyIsIm5iZiI6MTY5MDk4NjU1NCwianRpIjoiNjMiLCJub25jZSI6ImNpQkVVOTdaVmRWVSIsImdyb3VwcyI6WyJhZG1pbiJdLCJuYW1lIjoiQWRtaW5pc3RyYXRvciIsInVwZGF0ZWRfYXQiOjE2OTA5ODY1NDV9.2MUdtQR_QtzDY9BTMctG8C4uvg92DgMIUUoJed2cI7WTd5_VEPFW87esDQLw4snVdAJM1_Wf3wB88B2MXFDMCnMTNn0TMnzetRDiG3xlr2LL-geL5SNgwD0Y6RPK_aITjrC9uiQCTj3LPEENrBulNRZPURwaVon9WUVNuuBmMTKd7QKEuFN0zYDoRs0HnXo6WKnFy1rldLGh_JpA3PBUuXt4VMjfGQ7yYEuNn7MkFVDX6OnTffR8jTQp74hREvuRLFjYxfgfgu547X7yIcboOl81D0ZQlP-gfvBOeypZolRLScuqAA3fHBYvE0vCtOM6ObekfeeTDfms75csMLUuZtTR07x32xYC8vdoFsY0sRpMByTqlhsae9VX_rETJ7PIWEfruojzcj47WN9dG0K3pdPiJHEwZ1CKgZfU_cY0gtuAGaIcIjKL0txXCevaiIiIsrgSU_HTjNVybp4WHSAs3h6x0XLz4_91luCylsaoMQbwKOQNwAfr2L74jF6DOg-8DIPb-WClRQzaQtrkx_iv6FtqCB3ogFoZwi6xljdYUc2EHUmoAo-LXal-QAgUXGGzfFU2YOpxV3RyAbMGPm7PfkMVzDsDJwORJNhh38QQ6o88GgNnV28BT-d2G0n7okc0QC6o2IW0jpyCrI6v0hWOBUX2EqiJ5Wao-4LYZfCaRgU"; const refresh_token ="DEsqDca7nDGSgT6tJPkCwbPy98B8VOC4AA55lOPs03G3hqhZ8WH08REBcwTZg1s0jZyVoA3iCXzm4PPJ096gjV7ZKYyN8vnFKw6P6KLV3tUI6mWFaSROoh1LipThFrkS"; diff --git a/packages/oidc-client/src/parseTokens.ts b/packages/oidc-client/src/parseTokens.ts index b1e6f83df..0df18cb16 100644 --- a/packages/oidc-client/src/parseTokens.ts +++ b/packages/oidc-client/src/parseTokens.ts @@ -2,15 +2,15 @@ import {sleepAsync} from './initWorker.js'; const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); -const parseJwt = (token) => JSON.parse(b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/'))); +export const parseJwt = (payload:string) => JSON.parse(b64DecodeUnicode(payload.replace(/-/g, '+').replace(/_/g, '/'))); -const extractTokenPayload = (token) => { +const extractTokenPayload = (token:string) => { try { if (!token) { return null; } if (countLetter(token, '.') === 2) { - return parseJwt(token); + return parseJwt(token.split('.')[1]); } else { return null; }