@axa-fr/react-oidc 6.23.2 → 6.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/routes/OidcRoutes.d.ts.map +1 -1
- package/dist/core/routes/OidcRoutes.js +0 -3
- package/dist/core/routes/OidcRoutes.js.map +1 -1
- package/dist/service_worker/OidcServiceWorker.js +1 -1
- package/dist/service_worker/OidcServiceWorker.js.map +1 -1
- package/dist/service_worker/types.d.ts +1 -1
- package/dist/service_worker/types.d.ts.map +1 -1
- package/dist/service_worker/utils/codeVerifier.d.ts +2 -0
- package/dist/service_worker/utils/codeVerifier.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vanilla/initSession.d.ts +1 -1
- package/dist/vanilla/initSession.d.ts.map +1 -1
- package/dist/vanilla/initSession.js.map +1 -1
- package/dist/vanilla/initWorker.d.ts +4 -4
- package/dist/vanilla/initWorker.d.ts.map +1 -1
- package/dist/vanilla/initWorker.js +23 -5
- package/dist/vanilla/initWorker.js.map +1 -1
- package/package.json +1 -1
- package/service_worker/OidcServiceWorker.ts +16 -12
- package/service_worker/dist/OidcServiceWorker.js +1 -1
- package/service_worker/dist/OidcServiceWorker.js.map +1 -1
- package/service_worker/dist/types.d.ts +1 -1
- package/service_worker/dist/types.d.ts.map +1 -1
- package/service_worker/dist/utils/codeVerifier.d.ts +2 -0
- package/service_worker/dist/utils/codeVerifier.d.ts.map +1 -0
- package/service_worker/types.ts +1 -1
- package/service_worker/utils/__tests__/codeVerifier.spec.ts +14 -0
- package/service_worker/utils/codeVerifier.ts +6 -0
- package/service_worker/utils/tokens.ts +1 -1
- package/src/oidc/core/routes/OidcRoutes.tsx +0 -7
- package/src/oidc/vanilla/initSession.ts +1 -1
- package/src/oidc/vanilla/initWorker.ts +27 -10
|
@@ -241,13 +241,19 @@ const initWorkerAsync = (serviceWorkerRelativeUrl, configurationName) => __await
|
|
|
241
241
|
return result.sessionState;
|
|
242
242
|
});
|
|
243
243
|
const setNonceAsync = (nonce) => {
|
|
244
|
+
sessionStorage['oidc.nonce'] = nonce.nonce;
|
|
244
245
|
return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName });
|
|
245
246
|
};
|
|
246
|
-
const NONCE_TOKEN = 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
247
247
|
const getNonceAsync = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
248
248
|
// @ts-ignore
|
|
249
|
-
const
|
|
250
|
-
|
|
249
|
+
const result = yield sendMessageAsync(registration)({ type: 'getNonce', data: null, configurationName });
|
|
250
|
+
// @ts-ignore
|
|
251
|
+
let nonce = result.nonce;
|
|
252
|
+
if (!nonce) {
|
|
253
|
+
nonce = sessionStorage['oidc.nonce'];
|
|
254
|
+
console.warn('nonce not found in service worker, using sessionStorage');
|
|
255
|
+
}
|
|
256
|
+
return { nonce };
|
|
251
257
|
});
|
|
252
258
|
let getLoginParamsCache = null;
|
|
253
259
|
const setLoginParams = (configurationName, data) => {
|
|
@@ -264,17 +270,29 @@ const initWorkerAsync = (serviceWorkerRelativeUrl, configurationName) => __await
|
|
|
264
270
|
const getStateAsync = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
265
271
|
const result = yield sendMessageAsync(registration)({ type: 'getState', data: null, configurationName });
|
|
266
272
|
// @ts-ignore
|
|
267
|
-
|
|
273
|
+
let state = result.state;
|
|
274
|
+
if (!state) {
|
|
275
|
+
state = sessionStorage[`oidc.state.${configurationName}`];
|
|
276
|
+
console.warn('state not found in service worker, using sessionStorage');
|
|
277
|
+
}
|
|
278
|
+
return state;
|
|
268
279
|
});
|
|
269
280
|
const setStateAsync = (state) => __awaiter(void 0, void 0, void 0, function* () {
|
|
281
|
+
sessionStorage[`oidc.state.${configurationName}`] = state;
|
|
270
282
|
return sendMessageAsync(registration)({ type: 'setState', data: { state }, configurationName });
|
|
271
283
|
});
|
|
272
284
|
const getCodeVerifierAsync = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
273
285
|
const result = yield sendMessageAsync(registration)({ type: 'getCodeVerifier', data: null, configurationName });
|
|
274
286
|
// @ts-ignore
|
|
275
|
-
|
|
287
|
+
let codeVerifier = result.codeVerifier;
|
|
288
|
+
if (!codeVerifier) {
|
|
289
|
+
codeVerifier = sessionStorage[`oidc.code_verifier.${configurationName}`];
|
|
290
|
+
console.warn('codeVerifier not found in service worker, using sessionStorage');
|
|
291
|
+
}
|
|
292
|
+
return codeVerifier;
|
|
276
293
|
});
|
|
277
294
|
const setCodeVerifierAsync = (codeVerifier) => __awaiter(void 0, void 0, void 0, function* () {
|
|
295
|
+
sessionStorage[`oidc.code_verifier.${configurationName}`] = codeVerifier;
|
|
278
296
|
return sendMessageAsync(registration)({ type: 'setCodeVerifier', data: { codeVerifier }, configurationName });
|
|
279
297
|
});
|
|
280
298
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initWorker.js","sourceRoot":"","sources":["../../src/oidc/vanilla/initWorker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"initWorker.js","sourceRoot":"","sources":["../../src/oidc/vanilla/initWorker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
sleep,
|
|
17
17
|
getDomains,
|
|
18
18
|
} from './utils';
|
|
19
|
+
import {replaceCodeVerifier} from "./utils/codeVerifier";
|
|
19
20
|
|
|
20
21
|
const _self = self as ServiceWorkerGlobalScope & typeof globalThis;
|
|
21
22
|
|
|
@@ -221,14 +222,7 @@ const handleFetch = async (event: FetchEvent) => {
|
|
|
221
222
|
currentLoginCallbackConfigurationName = null;
|
|
222
223
|
let newBody = actualBody;
|
|
223
224
|
if (currentDatabase && currentDatabase.codeVerifier != null) {
|
|
224
|
-
|
|
225
|
-
TOKEN.CODE_VERIFIER + '_' + currentDatabase.configurationName;
|
|
226
|
-
if (actualBody.includes(keyCodeVerifier)) {
|
|
227
|
-
newBody = newBody.replace(
|
|
228
|
-
keyCodeVerifier,
|
|
229
|
-
currentDatabase.codeVerifier
|
|
230
|
-
);
|
|
231
|
-
}
|
|
225
|
+
newBody = replaceCodeVerifier(newBody, currentDatabase.codeVerifier);
|
|
232
226
|
}
|
|
233
227
|
|
|
234
228
|
return fetch(originalRequest, {
|
|
@@ -391,7 +385,7 @@ const handleMessage = (event: ExtendableMessageEvent) => {
|
|
|
391
385
|
case 'getCodeVerifier': {
|
|
392
386
|
port.postMessage({
|
|
393
387
|
configurationName,
|
|
394
|
-
codeVerifier: TOKEN.CODE_VERIFIER + '_' + configurationName,
|
|
388
|
+
codeVerifier: currentDatabase.codeVerifier != null ? TOKEN.CODE_VERIFIER + '_' + configurationName : null,
|
|
395
389
|
});
|
|
396
390
|
return;
|
|
397
391
|
}
|
|
@@ -404,10 +398,20 @@ const handleMessage = (event: ExtendableMessageEvent) => {
|
|
|
404
398
|
port.postMessage({ configurationName, sessionState });
|
|
405
399
|
return;
|
|
406
400
|
}
|
|
407
|
-
case 'setNonce':
|
|
408
|
-
|
|
409
|
-
|
|
401
|
+
case 'setNonce': {
|
|
402
|
+
let nonce = data.data.nonce;
|
|
403
|
+
if (nonce) {
|
|
404
|
+
currentDatabase.nonce = nonce;
|
|
405
|
+
}
|
|
406
|
+
port.postMessage({configurationName});
|
|
410
407
|
return;
|
|
408
|
+
}
|
|
409
|
+
case 'getNonce': {
|
|
410
|
+
const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName;
|
|
411
|
+
const nonce = currentDatabase.nonce ? keyNonce : null;
|
|
412
|
+
port.postMessage({configurationName, nonce});
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
411
415
|
default:
|
|
412
416
|
currentDatabase.items = { ...data.data };
|
|
413
417
|
port.postMessage({ configurationName });
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const y="OidcTrustedDomains.js",A="*",_={REFRESH_TOKEN:"REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER",ACCESS_TOKEN:"ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER",NONCE_TOKEN:"NONCE_SECURED_BY_OIDC_SERVICE_WORKER",CODE_VERIFIER:"CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER"},w={access_token_or_id_token_invalid:"access_token_or_id_token_invalid",access_token_invalid:"access_token_invalid",id_token_invalid:"id_token_invalid"},I="/.well-known/openid-configuration";function K(n,e){if(!e)return;if(!n.find(o=>{var s;let t;return typeof o=="string"?t=new RegExp(`^${o}`):t=o,(s=t.test)==null?void 0:s.call(t,e)}))throw new Error("Domain "+e+" is not trusted, please add domain in "+y)}const D=(n,e)=>Array.isArray(n)?n:n[`${e}Domains`]??n.domains??[],M=(n,e,i)=>{var o;if(e.endsWith(I))return null;for(const[t,s]of Object.entries(n)){const d=s.oidcServerConfiguration;if(!d||d.tokenEndpoint&&e===d.tokenEndpoint||d.revocationEndpoint&&e===d.revocationEndpoint)continue;const l=i==null?[]:i[t],f=D(l,"accessToken"),r=d.userInfoEndpoint?[d.userInfoEndpoint,...f]:[...f];let a=!1;if(r.find(h=>h===A))a=!0;else for(let h=0;h<r.length;h++){let c=r[h];if(typeof c=="string"&&(c=new RegExp(`^${c}`)),(o=c.test)!=null&&o.call(c,e)){a=!0;break}}if(a)return s.tokens?s:null}return null};function U(n,e){return n.split(e).length-1}function P(n){return JSON.parse(W(n.split(".")[1].replace("-","+").replace("_","/")))}function W(n){return decodeURIComponent(Array.prototype.map.call(atob(n),e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""))}function F(n,e){const i=new Date().getTime()/1e3;return Math.round(e-n-i)}function b(n){return n?F(0,n.expiresAt)>0:!1}const O=n=>{try{return n&&U(n,".")===2?P(n):null}catch(e){console.warn(e)}return null},q=(n,e,i)=>{if(n.idTokenPayload){const o=n.idTokenPayload;if(i.issuer!==o.iss)return{isValid:!1,reason:"Issuer does not match"};const t=new Date().getTime()/1e3;if(o.exp&&o.exp<t)return{isValid:!1,reason:"Token expired"};const s=60*60*24*7;if(o.iat&&o.iat+s<t)return{isValid:!1,reason:"Token is used from too long time"};if(e&&o.nonce&&o.nonce!==e)return{isValid:!1,reason:"Nonce does not match"}}return{isValid:!0,reason:""}};function L(n,e,i){if(!n.issued_at){const u=new Date().getTime()/1e3;n.issued_at=u}const o=O(n.access_token),t={...n,accessTokenPayload:o};e.hideAccessToken&&(t.access_token=_.ACCESS_TOKEN+"_"+i),n.accessTokenPayload=o;let s=null;if(n.id_token){if(s=O(n.id_token),n.idTokenPayload={...s},s.nonce&&e.nonce!=null){const u=_.NONCE_TOKEN+"_"+e.configurationName;s.nonce=u}t.idTokenPayload=s}n.refresh_token&&(t.refresh_token=_.REFRESH_TOKEN+"_"+i);const d=s&&s.exp?s.exp:Number.MAX_VALUE,l=o&&o.exp?o.exp:n.issued_at+n.expires_in;let f;const r=e.oidcConfiguration.token_renew_mode;r===w.access_token_invalid?f=l:r===w.id_token_invalid?f=d:f=d<l?d:l,t.expiresAt=f,n.expiresAt=f;const a=e.nonce?e.nonce.nonce:null,{isValid:h,reason:c}=q(n,a,e.oidcServerConfiguration);if(!h)throw Error(`Tokens are not OpenID valid, reason: ${c}`);if(e.tokens!=null&&"refresh_token"in e.tokens&&!("refresh_token"in n)){const u=e.tokens.refresh_token;e.tokens={...n,refresh_token:u}}else e.tokens=n;return e.status="LOGGED_IN",t}function N(n){const e=n.configurationName;return i=>i.status!==200?i:i.json().then(o=>{const t=L(o,n,e),s=JSON.stringify(t);return new Response(s,i)})}function T(n){const e={};for(const i of n.keys())n.has(i)&&(e[i]=n.get(i));return e}const V=n=>new Promise(e=>setTimeout(e,n));function H(n,e){const i=/code_verifier=[A-Za-z0-9_-]+/i;return n.replace(i,`code_verifier=${e}`)}const p=self;p.importScripts(y);const x=Math.round(new Date().getTime()/1e3).toString(),j="OidcKeepAliveServiceWorker.json",$=n=>{console.log("[OidcServiceWorker] service worker installed "+x),n.waitUntil(p.skipWaiting())},z=n=>{console.log("[OidcServiceWorker] service worker activated "+x),n.waitUntil(p.clients.claim())};let S=null;const g={default:{configurationName:"default",tokens:null,status:null,state:null,codeVerifier:null,nonce:null,oidcServerConfiguration:null,hideAccessToken:!0}},J=(n,e)=>{const i=[];for(const[,o]of Object.entries(n))(o.oidcServerConfiguration!=null&&e.startsWith(o.oidcServerConfiguration.tokenEndpoint)||o.oidcServerConfiguration!=null&&o.oidcServerConfiguration.revocationEndpoint&&e.startsWith(o.oidcServerConfiguration.revocationEndpoint))&&i.push(o);return i},Y=async n=>{const e=n.request,i=e.headers.has("oidc-vanilla"),o={status:200,statusText:"oidc-service-worker"},t=new Response("{}",o);if(!i){const s=new URL(e.url),d=Number(s.searchParams.get("minSleepSeconds"))||240;for(let l=0;l<d;l++)await V(1e3+Math.floor(Math.random()*1e3)),await(await caches.open("oidc_dummy_cache")).put(n.request,t.clone())}return t},B=async n=>{const e=n.request,i=e.url;if(e.url.includes(j)){n.respondWith(Y(n));return}const o=M(g,e.url,trustedDomains);if(o&&o.tokens&&o.tokens.access_token){for(;o.tokens&&!b(o.tokens);)await V(200);const l=e.mode=="navigate"?new Request(e,{headers:{...T(e.headers),authorization:"Bearer "+o.tokens.access_token}}):new Request(e,{headers:{...T(e.headers),authorization:"Bearer "+o.tokens.access_token},mode:o.oidcConfiguration.service_worker_convert_all_requests_to_cors?"cors":e.mode});n.waitUntil(n.respondWith(fetch(l)));return}if(n.request.method!=="POST")return;let t=null;const s=J(g,e.url),d=s.length;if(d>0){const l=new Promise((f,r)=>{const a=e.clone();a.text().then(c=>{if(c.includes(_.REFRESH_TOKEN)||c.includes(_.ACCESS_TOKEN)){let u=c;for(let E=0;E<d;E++){const k=s[E];if(k&&k.tokens!=null){const R=_.REFRESH_TOKEN+"_"+k.configurationName;if(c.includes(R)){u=u.replace(R,encodeURIComponent(k.tokens.refresh_token)),t=k;break}const v=_.ACCESS_TOKEN+"_"+k.configurationName;if(c.includes(v)){u=u.replace(v,encodeURIComponent(k.tokens.access_token)),t=k;break}}}const C=fetch(e,{body:u,method:a.method,headers:{...T(e.headers)},mode:a.mode,cache:a.cache,redirect:a.redirect,referrer:a.referrer,credentials:a.credentials,integrity:a.integrity});return t&&t.oidcServerConfiguration!=null&&t.oidcServerConfiguration.revocationEndpoint&&i.startsWith(t.oidcServerConfiguration.revocationEndpoint)?C.then(async E=>{const k=await E.text();return new Response(k,E)}):C.then(N(t))}else if(c.includes("code_verifier=")&&S){t=g[S],S=null;let u=c;return t&&t.codeVerifier!=null&&(u=H(u,t.codeVerifier)),fetch(e,{body:u,method:a.method,headers:{...T(e.headers)},mode:a.mode,cache:a.cache,redirect:a.redirect,referrer:a.referrer,credentials:a.credentials,integrity:a.integrity}).then(N(t))}}).then(c=>{c!==void 0?f(c):(console.log("success undefined"),r(new Error("Response is undefined inside a success")))}).catch(c=>{c!==void 0?r(c):(console.log("error undefined"),r(new Error("Response is undefined inside a error")))})});n.waitUntil(n.respondWith(l))}},m={},G=n=>{const e=n.ports[0],i=n.data,o=i.configurationName;let t=g[o];if(trustedDomains==null&&(trustedDomains={}),!t){if(m[o]===void 0){let s=trustedDomains[o];m[o]=Array.isArray(s)?!1:s.showAccessToken}g[o]={tokens:null,state:null,codeVerifier:null,oidcServerConfiguration:null,oidcConfiguration:void 0,nonce:null,status:null,configurationName:o,hideAccessToken:!m[o]},t=g[o],trustedDomains[o]||(trustedDomains[o]=[])}switch(i.type){case"clear":t.tokens=null,t.state=null,t.codeVerifier=null,t.status=i.data.status,e.postMessage({configurationName:o});return;case"init":{const s=i.data.oidcServerConfiguration;let d=trustedDomains[o];const l=D(d,"oidc");l.find(r=>r===A)||[s.tokenEndpoint,s.revocationEndpoint,s.userInfoEndpoint,s.issuer].forEach(r=>{K(l,r)}),t.oidcServerConfiguration=s,t.oidcConfiguration=i.data.oidcConfiguration;const f=i.data.where;if(f==="loginCallbackAsync"||f==="tryKeepExistingSessionAsync"?S=o:S=null,!t.tokens)e.postMessage({tokens:null,status:t.status,configurationName:o});else{const r={...t.tokens};t.hideAccessToken&&(r.access_token=_.ACCESS_TOKEN+"_"+o),r.refresh_token&&(r.refresh_token=_.REFRESH_TOKEN+"_"+o),r.idTokenPayload&&r.idTokenPayload.nonce&&t.nonce!=null&&(r.idTokenPayload.nonce=_.NONCE_TOKEN+"_"+o),e.postMessage({tokens:r,status:t.status,configurationName:o})}return}case"setState":t.state=i.data.state,e.postMessage({configurationName:o});return;case"getState":{const s=t.state;e.postMessage({configurationName:o,state:s});return}case"setCodeVerifier":t.codeVerifier=i.data.codeVerifier,e.postMessage({configurationName:o});return;case"getCodeVerifier":{e.postMessage({configurationName:o,codeVerifier:t.codeVerifier!=null?_.CODE_VERIFIER+"_"+o:null});return}case"setSessionState":t.sessionState=i.data.sessionState,e.postMessage({configurationName:o});return;case"getSessionState":{const s=t.sessionState;e.postMessage({configurationName:o,sessionState:s});return}case"setNonce":{let s=i.data.nonce;s&&(t.nonce=s),e.postMessage({configurationName:o});return}case"getNonce":{const s=_.NONCE_TOKEN+"_"+o,d=t.nonce?s:null;e.postMessage({configurationName:o,nonce:d});return}default:t.items={...i.data},e.postMessage({configurationName:o})}};p.addEventListener("install",$);p.addEventListener("activate",z);p.addEventListener("fetch",B);p.addEventListener("message",G);
|
|
2
2
|
//# sourceMappingURL=OidcServiceWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OidcServiceWorker.js","sources":["../constants.ts","../utils/domains.ts","../utils/strings.ts","../utils/tokens.ts","../utils/serializeHeaders.ts","../utils/sleep.ts","../OidcServiceWorker.ts"],"sourcesContent":["const scriptFilename = 'OidcTrustedDomains.js'; /* global trustedDomains */\nconst acceptAnyDomainToken = '*';\n\ntype TokenType = {\n readonly REFRESH_TOKEN: string;\n readonly ACCESS_TOKEN: string;\n readonly NONCE_TOKEN: string;\n readonly CODE_VERIFIER: string;\n};\n\nconst TOKEN: TokenType = {\n REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\n ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\n NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER',\n CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER',\n};\n\ntype TokenRenewModeType = {\n readonly access_token_or_id_token_invalid: string;\n readonly access_token_invalid: string;\n readonly id_token_invalid: string;\n};\n\nconst TokenRenewMode: TokenRenewModeType = {\n access_token_or_id_token_invalid: 'access_token_or_id_token_invalid',\n access_token_invalid: 'access_token_invalid',\n id_token_invalid: 'id_token_invalid',\n};\n\nconst openidWellknownUrlEndWith = '/.well-known/openid-configuration';\n\nexport { scriptFilename, acceptAnyDomainToken, TOKEN, TokenRenewMode, openidWellknownUrlEndWith };\n","import { DomainDetails, TrustedDomains } from './../types';\nimport {\n acceptAnyDomainToken,\n openidWellknownUrlEndWith,\n scriptFilename,\n} from '../constants';\nimport { Database, Domain, OidcConfig } from '../types';\n\nfunction checkDomain(domains: Domain[], endpoint: string) {\n if (!endpoint) {\n return;\n }\n\n const domain = domains.find((domain) => {\n let testable: RegExp;\n\n if (typeof domain === 'string') {\n testable = new RegExp(`^${domain}`);\n } else {\n testable = domain;\n }\n\n return testable.test?.(endpoint);\n });\n if (!domain) {\n throw new Error(\n 'Domain ' +\n endpoint +\n ' is not trusted, please add domain in ' +\n scriptFilename\n );\n }\n}\n\nexport const getDomains = (trustedDomain: Domain[] | DomainDetails, type: 'oidc' | 'accessToken') => {\n if(Array.isArray(trustedDomain)) {\n return trustedDomain;\n }\n\n return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? [];\n}\n\nconst getCurrentDatabaseDomain = (\n database: Database,\n url: string,\n trustedDomains: TrustedDomains\n) => {\n if (url.endsWith(openidWellknownUrlEndWith)) {\n return null;\n }\n for (const [key, currentDatabase] of Object.entries<OidcConfig>(database)) {\n const oidcServerConfiguration = currentDatabase.oidcServerConfiguration;\n\n if (!oidcServerConfiguration) {\n continue;\n }\n\n if (\n oidcServerConfiguration.tokenEndpoint &&\n url === oidcServerConfiguration.tokenEndpoint\n ) {\n continue;\n }\n if (\n oidcServerConfiguration.revocationEndpoint &&\n url === oidcServerConfiguration.revocationEndpoint\n ) {\n continue;\n }\n const trustedDomain = trustedDomains == null ? [] : trustedDomains[key];\n\n const domains = getDomains(trustedDomain, 'accessToken');\n const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint\n ? [oidcServerConfiguration.userInfoEndpoint, ...domains]\n : [...domains];\n\n let hasToSendToken = false;\n if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) {\n hasToSendToken = true;\n } else {\n for (let i = 0; i < domainsToSendTokens.length; i++) {\n let domain = domainsToSendTokens[i];\n\n if (typeof domain === 'string') {\n domain = new RegExp(`^${domain}`);\n }\n\n if (domain.test?.(url)) {\n hasToSendToken = true;\n break;\n }\n }\n }\n\n if (hasToSendToken) {\n if (!currentDatabase.tokens) {\n return null;\n }\n return currentDatabase;\n }\n }\n return null;\n};\n\nexport { checkDomain, getCurrentDatabaseDomain };\n","/**\n * Count occurances of letter in string\n * @param str\n * @param find\n * @returns\n */\nexport function countLetter(str: string, find: string) {\n return str.split(find).length - 1;\n}\n","import { TOKEN, TokenRenewMode } from '../constants';\nimport { OidcConfig, OidcConfiguration, OidcServerConfiguration, Tokens } from '../types';\nimport { countLetter } from './strings';\n\nfunction parseJwt(token: string) {\n return JSON.parse(\n b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/'))\n );\n}\nfunction b64DecodeUnicode(str: string) {\n return decodeURIComponent(\n Array.prototype.map\n .call(\n atob(str),\n (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n )\n .join('')\n );\n}\n\nfunction computeTimeLeft(\n refreshTimeBeforeTokensExpirationInSecond: number,\n expiresAt: number\n) {\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n return Math.round(\n expiresAt -\n refreshTimeBeforeTokensExpirationInSecond -\n currentTimeUnixSecond\n );\n}\n\nfunction isTokensValid(tokens: Tokens | null) {\n if (!tokens) {\n return false;\n }\n return computeTimeLeft(0, tokens.expiresAt) > 0;\n}\n\nconst extractTokenPayload = (token?: string) => {\n try {\n if (!token) {\n return null;\n }\n if (countLetter(token, '.') === 2) {\n return parseJwt(token);\n } else {\n return null;\n }\n } catch (e) {\n console.warn(e);\n }\n return null;\n};\n\n// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation (excluding rules #1, #4, #5, #7, #8, #12, and #13 which did not apply).\n// https://github.com/openid/AppAuth-JS/issues/65\nconst isTokensOidcValid = (\n tokens: Tokens,\n nonce: string | null,\n oidcServerConfiguration: OidcServerConfiguration\n): { isValid: boolean; reason: string } => {\n if (tokens.idTokenPayload) {\n const idTokenPayload = tokens.idTokenPayload;\n // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim.\n if (oidcServerConfiguration.issuer !== idTokenPayload.iss) {\n return { isValid: false, reason: 'Issuer does not match' };\n }\n // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client.\n\n // 6: If the ID Token is received via direct communication between the Client and the Token Endpoint (which it is in this flow), the TLS server validation MAY be used to validate the issuer in place of checking the token signature. The Client MUST validate the signature of all other ID Tokens according to JWS [JWS] using the algorithm specified in the JWT alg Header Parameter. The Client MUST use the keys provided by the Issuer.\n\n // 9: The current time MUST be before the time represented by the exp Claim.\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) {\n return { isValid: false, reason: 'Token expired' };\n }\n // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific.\n const timeInSevenDays = 60 * 60 * 24 * 7;\n if (\n idTokenPayload.iat &&\n idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond\n ) {\n return { isValid: false, reason: 'Token is used from too long time' };\n }\n // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific.\n if (idTokenPayload.nonce && idTokenPayload.nonce !== nonce) {\n return { isValid: false, reason: 'Nonce does not match' };\n }\n }\n return { isValid: true, reason: '' };\n};\n\nfunction _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string) {\n if (!tokens.issued_at) {\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n tokens.issued_at = currentTimeUnixSecond;\n }\n\n const accessTokenPayload = extractTokenPayload(tokens.access_token);\n const secureTokens = {\n ...tokens,\n accessTokenPayload,\n };\n if (currentDatabaseElement.hideAccessToken) {\n secureTokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\n }\n tokens.accessTokenPayload = accessTokenPayload;\n\n let _idTokenPayload = null;\n if (tokens.id_token) {\n _idTokenPayload = extractTokenPayload(tokens.id_token);\n tokens.idTokenPayload = {..._idTokenPayload};\n if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) {\n const keyNonce =\n TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName;\n _idTokenPayload.nonce = keyNonce;\n }\n secureTokens.idTokenPayload = _idTokenPayload;\n }\n if (tokens.refresh_token) {\n secureTokens.refresh_token =\n TOKEN.REFRESH_TOKEN + '_' + configurationName;\n }\n\n const idTokenExpiresAt =\n _idTokenPayload && _idTokenPayload.exp\n ? _idTokenPayload.exp\n : Number.MAX_VALUE;\n const accessTokenExpiresAt =\n accessTokenPayload && accessTokenPayload.exp\n ? accessTokenPayload.exp\n : tokens.issued_at + tokens.expires_in;\n\n let expiresAt: number;\n const tokenRenewMode = (\n currentDatabaseElement.oidcConfiguration as OidcConfiguration\n ).token_renew_mode;\n if (tokenRenewMode === TokenRenewMode.access_token_invalid) {\n expiresAt = accessTokenExpiresAt;\n } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) {\n expiresAt = idTokenExpiresAt;\n } else {\n expiresAt =\n idTokenExpiresAt < accessTokenExpiresAt\n ? idTokenExpiresAt\n : accessTokenExpiresAt;\n }\n secureTokens.expiresAt = expiresAt;\n\n tokens.expiresAt = expiresAt;\n const nonce = currentDatabaseElement.nonce\n ? currentDatabaseElement.nonce.nonce\n : null;\n const {isValid, reason} = isTokensOidcValid(\n tokens,\n nonce,\n currentDatabaseElement.oidcServerConfiguration as OidcServerConfiguration\n ); //TODO: Type assertion, could be null.\n if (!isValid) {\n throw Error(`Tokens are not OpenID valid, reason: ${reason}`);\n }\n\n // When refresh_token is not rotated we reuse ald refresh_token\n if (\n currentDatabaseElement.tokens != null &&\n 'refresh_token' in currentDatabaseElement.tokens &&\n !('refresh_token' in tokens)\n ) {\n const refreshToken = currentDatabaseElement.tokens.refresh_token;\n\n currentDatabaseElement.tokens = {\n ...tokens,\n refresh_token: refreshToken,\n };\n } else {\n currentDatabaseElement.tokens = tokens;\n }\n\n currentDatabaseElement.status = 'LOGGED_IN';\n return secureTokens;\n}\n\nfunction hideTokens(currentDatabaseElement: OidcConfig) {\n const configurationName = currentDatabaseElement.configurationName;\n return (response: Response) => {\n if (response.status !== 200) {\n return response;\n }\n return response.json().then<Response>((tokens: Tokens) => {\n const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName);\n const body = JSON.stringify(secureTokens);\n return new Response(body, response);\n });\n };\n}\n\nexport {\n b64DecodeUnicode,\n computeTimeLeft,\n isTokensValid,\n extractTokenPayload,\n isTokensOidcValid,\n hideTokens,\n _hideTokens\n};\n","import { FetchHeaders } from '../types';\n\nfunction serializeHeaders(headers: Headers) {\n const headersObj: Record<string, string> = {};\n for (const key of (headers as FetchHeaders).keys()) {\n if (headers.has(key)) {\n headersObj[key] = headers.get(key) as string;\n }\n }\n return headersObj;\n}\nexport {serializeHeaders};","const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\nexport { sleep };\n","import { acceptAnyDomainToken, TOKEN, scriptFilename } from './constants';\nimport {\n TrustedDomains,\n Database,\n OidcConfig,\n OidcConfiguration,\n MessageEventData,\n // TrustedDomainsShowAccessToken,\n} from './types';\nimport {\n checkDomain,\n getCurrentDatabaseDomain,\n hideTokens,\n isTokensValid,\n serializeHeaders,\n sleep,\n getDomains,\n} from './utils';\n\nconst _self = self as ServiceWorkerGlobalScope & typeof globalThis;\n\ndeclare let trustedDomains: TrustedDomains;\n\n_self.importScripts(scriptFilename);\n\nconst id = Math.round(new Date().getTime() / 1000).toString();\n\nconst keepAliveJsonFilename = 'OidcKeepAliveServiceWorker.json';\nconst handleInstall = (event: ExtendableEvent) => {\n console.log('[OidcServiceWorker] service worker installed ' + id);\n event.waitUntil(_self.skipWaiting());\n};\n\nconst handleActivate = (event: ExtendableEvent) => {\n console.log('[OidcServiceWorker] service worker activated ' + id);\n event.waitUntil(_self.clients.claim());\n};\n\nlet currentLoginCallbackConfigurationName: string | null = null;\nconst database: Database = {\n default: {\n configurationName: 'default',\n tokens: null,\n status: null,\n state: null,\n codeVerifier: null,\n nonce: null,\n oidcServerConfiguration: null,\n hideAccessToken: true,\n },\n};\n\nconst getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => {\n const databases: OidcConfig[] = [];\n for (const [, value] of Object.entries<OidcConfig>(database)) {\n if (\n value.oidcServerConfiguration != null &&\n url.startsWith(value.oidcServerConfiguration.tokenEndpoint)\n ) {\n databases.push(value);\n } else if (\n value.oidcServerConfiguration != null &&\n value.oidcServerConfiguration.revocationEndpoint &&\n url.startsWith(value.oidcServerConfiguration.revocationEndpoint)\n ) {\n databases.push(value);\n }\n }\n return databases;\n};\n\nconst keepAliveAsync = async (event: FetchEvent) => {\n const originalRequest = event.request;\n const isFromVanilla = originalRequest.headers.has('oidc-vanilla');\n const init = { status: 200, statusText: 'oidc-service-worker' };\n const response = new Response('{}', init);\n if (!isFromVanilla) {\n const originalRequestUrl = new URL(originalRequest.url);\n const minSleepSeconds = Number(originalRequestUrl.searchParams.get('minSleepSeconds')) || 240;\n for (let i = 0; i < minSleepSeconds; i++) {\n await sleep(1000 + Math.floor(Math.random() * 1000));\n const cache = await caches.open('oidc_dummy_cache');\n await cache.put(event.request, response.clone());\n }\n }\n return response;\n};\n\nconst handleFetch = async (event: FetchEvent) => {\n const originalRequest = event.request;\n const url = originalRequest.url;\n if (originalRequest.url.includes(keepAliveJsonFilename)) {\n event.respondWith(keepAliveAsync(event));\n return;\n }\n\n const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain(\n database,\n originalRequest.url,\n trustedDomains\n );\n if (\n currentDatabaseForRequestAccessToken &&\n currentDatabaseForRequestAccessToken.tokens &&\n currentDatabaseForRequestAccessToken.tokens.access_token\n ) {\n while (\n currentDatabaseForRequestAccessToken.tokens &&\n !isTokensValid(currentDatabaseForRequestAccessToken.tokens)\n ) {\n await sleep(200);\n }\n const newRequest =\n originalRequest.mode == 'navigate'\n ? new Request(originalRequest, {\n headers: {\n ...serializeHeaders(originalRequest.headers),\n authorization:\n 'Bearer ' +\n currentDatabaseForRequestAccessToken.tokens.access_token,\n },\n })\n : new Request(originalRequest, {\n headers: {\n ...serializeHeaders(originalRequest.headers),\n authorization:\n 'Bearer ' +\n currentDatabaseForRequestAccessToken.tokens.access_token,\n },\n mode: (\n currentDatabaseForRequestAccessToken.oidcConfiguration as OidcConfiguration\n ).service_worker_convert_all_requests_to_cors\n ? 'cors'\n : originalRequest.mode,\n });\n\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\n event.waitUntil(event.respondWith(fetch(newRequest)));\n\n return;\n }\n\n if (event.request.method !== 'POST') {\n return;\n }\n\n let currentDatabase: OidcConfig | null = null;\n const currentDatabases = getCurrentDatabasesTokenEndpoint(\n database,\n originalRequest.url\n );\n const numberDatabase = currentDatabases.length;\n if (numberDatabase > 0) {\n const maPromesse = new Promise<Response>((resolve, reject) => {\n const clonedRequest = originalRequest.clone();\n const response = clonedRequest.text().then((actualBody) => {\n if (\n actualBody.includes(TOKEN.REFRESH_TOKEN) ||\n actualBody.includes(TOKEN.ACCESS_TOKEN)\n ) {\n let newBody = actualBody;\n for (let i = 0; i < numberDatabase; i++) {\n const currentDb = currentDatabases[i];\n\n if (currentDb && currentDb.tokens != null) {\n const keyRefreshToken =\n TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName;\n if (actualBody.includes(keyRefreshToken)) {\n newBody = newBody.replace(\n keyRefreshToken,\n encodeURIComponent(currentDb.tokens.refresh_token as string)\n );\n currentDatabase = currentDb;\n break;\n }\n const keyAccessToken =\n TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName;\n if (actualBody.includes(keyAccessToken)) {\n newBody = newBody.replace(\n keyAccessToken,\n encodeURIComponent(currentDb.tokens.access_token)\n );\n currentDatabase = currentDb;\n break;\n }\n }\n }\n const fetchPromise = fetch(originalRequest, {\n body: newBody,\n method: clonedRequest.method,\n headers: {\n ...serializeHeaders(originalRequest.headers),\n },\n mode: clonedRequest.mode,\n cache: clonedRequest.cache,\n redirect: clonedRequest.redirect,\n referrer: clonedRequest.referrer,\n credentials: clonedRequest.credentials,\n integrity: clonedRequest.integrity,\n });\n\n if (\n currentDatabase &&\n currentDatabase.oidcServerConfiguration != null &&\n currentDatabase.oidcServerConfiguration.revocationEndpoint &&\n url.startsWith(\n currentDatabase.oidcServerConfiguration.revocationEndpoint\n )\n ) {\n return fetchPromise.then(async (response) => {\n const text = await response.text();\n return new Response(text, response);\n });\n }\n return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); //todo type assertion to OidcConfig but could be null, NEEDS REVIEW\n } else if (\n actualBody.includes('code_verifier=') &&\n currentLoginCallbackConfigurationName\n ) {\n currentDatabase = database[currentLoginCallbackConfigurationName];\n currentLoginCallbackConfigurationName = null;\n let newBody = actualBody;\n if (currentDatabase && currentDatabase.codeVerifier != null) {\n const keyCodeVerifier =\n TOKEN.CODE_VERIFIER + '_' + currentDatabase.configurationName;\n if (actualBody.includes(keyCodeVerifier)) {\n newBody = newBody.replace(\n keyCodeVerifier,\n currentDatabase.codeVerifier\n );\n }\n }\n\n return fetch(originalRequest, {\n body: newBody,\n method: clonedRequest.method,\n headers: {\n ...serializeHeaders(originalRequest.headers),\n },\n mode: clonedRequest.mode,\n cache: clonedRequest.cache,\n redirect: clonedRequest.redirect,\n referrer: clonedRequest.referrer,\n credentials: clonedRequest.credentials,\n integrity: clonedRequest.integrity,\n }).then(hideTokens(currentDatabase));\n }\n return undefined;\n });\n response\n .then((r) => {\n if (r !== undefined) {\n resolve(r);\n } else {\n console.log('success undefined');\n reject(new Error('Response is undefined inside a success'));\n }\n })\n .catch((err) => {\n if (err !== undefined) {\n reject(err);\n } else {\n console.log('error undefined');\n reject(new Error('Response is undefined inside a error'));\n }\n });\n });\n\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\n event.waitUntil(event.respondWith(maPromesse));\n }\n};\n\ntype TrustedDomainsShowAccessToken = {\n [key: string]: boolean\n}\n\nconst trustedDomainsShowAccessToken: TrustedDomainsShowAccessToken = {};\n\nconst handleMessage = (event: ExtendableMessageEvent) => {\n const port = event.ports[0];\n const data = event.data as MessageEventData;\n const configurationName = data.configurationName;\n let currentDatabase = database[configurationName];\n if(trustedDomains== null){\n trustedDomains = {};\n }\n if (!currentDatabase) {\n \n if (trustedDomainsShowAccessToken[configurationName] === undefined) {\n let trustedDomain = trustedDomains[configurationName];\n trustedDomainsShowAccessToken[configurationName] = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken;\n }\n database[configurationName] = {\n tokens: null,\n state: null,\n codeVerifier: null,\n oidcServerConfiguration: null,\n oidcConfiguration: undefined,\n nonce: null,\n status: null,\n configurationName,\n hideAccessToken: !trustedDomainsShowAccessToken[configurationName],\n };\n currentDatabase = database[configurationName];\n \n if (!trustedDomains[configurationName]) {\n trustedDomains[configurationName] = [];\n }\n }\n\n switch (data.type) {\n case 'clear':\n currentDatabase.tokens = null;\n currentDatabase.state = null;\n currentDatabase.codeVerifier = null;\n currentDatabase.status = data.data.status;\n port.postMessage({ configurationName });\n return;\n case 'init': {\n const oidcServerConfiguration = data.data.oidcServerConfiguration;\n let trustedDomain = trustedDomains[configurationName];\n const domains = getDomains(trustedDomain, 'oidc');\n if (!domains.find((f) => f === acceptAnyDomainToken)) {\n [\n oidcServerConfiguration.tokenEndpoint,\n oidcServerConfiguration.revocationEndpoint,\n oidcServerConfiguration.userInfoEndpoint,\n oidcServerConfiguration.issuer,\n ].forEach((url) => {\n checkDomain(domains, url);\n });\n }\n currentDatabase.oidcServerConfiguration = oidcServerConfiguration;\n currentDatabase.oidcConfiguration = data.data.oidcConfiguration;\n const where = data.data.where;\n if (\n where === 'loginCallbackAsync' ||\n where === 'tryKeepExistingSessionAsync'\n ) {\n currentLoginCallbackConfigurationName = configurationName;\n } else {\n currentLoginCallbackConfigurationName = null;\n }\n\n if (!currentDatabase.tokens) {\n port.postMessage({\n tokens: null,\n status: currentDatabase.status,\n configurationName,\n });\n } else {\n const tokens = {\n ...currentDatabase.tokens,\n };\n if(currentDatabase.hideAccessToken) {\n tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\n }\n if (tokens.refresh_token) {\n tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName;\n }\n if (\n tokens.idTokenPayload &&\n tokens.idTokenPayload.nonce &&\n currentDatabase.nonce != null\n ) {\n tokens.idTokenPayload.nonce =\n TOKEN.NONCE_TOKEN + '_' + configurationName;\n }\n port.postMessage({\n tokens,\n status: currentDatabase.status,\n configurationName,\n });\n }\n return;\n }\n case 'setState':\n currentDatabase.state = data.data.state;\n port.postMessage({ configurationName });\n return;\n case 'getState': {\n const state = currentDatabase.state;\n port.postMessage({ configurationName, state });\n return;\n }\n case 'setCodeVerifier':\n currentDatabase.codeVerifier = data.data.codeVerifier;\n port.postMessage({ configurationName });\n return;\n case 'getCodeVerifier': {\n port.postMessage({\n configurationName,\n codeVerifier: TOKEN.CODE_VERIFIER + '_' + configurationName,\n });\n return;\n }\n case 'setSessionState':\n currentDatabase.sessionState = data.data.sessionState;\n port.postMessage({ configurationName });\n return;\n case 'getSessionState': {\n const sessionState = currentDatabase.sessionState;\n port.postMessage({ configurationName, sessionState });\n return;\n }\n case 'setNonce':\n currentDatabase.nonce = data.data.nonce;\n port.postMessage({ configurationName });\n return;\n default:\n currentDatabase.items = { ...data.data };\n port.postMessage({ configurationName });\n }\n};\n\n_self.addEventListener('install', handleInstall);\n_self.addEventListener('activate', handleActivate);\n_self.addEventListener('fetch', handleFetch);\n_self.addEventListener('message', handleMessage);\n"],"names":["scriptFilename","acceptAnyDomainToken","TOKEN","TokenRenewMode","openidWellknownUrlEndWith","checkDomain","domains","endpoint","domain","testable","_a","getDomains","trustedDomain","type","getCurrentDatabaseDomain","database","url","trustedDomains","key","currentDatabase","oidcServerConfiguration","domainsToSendTokens","hasToSendToken","f","i","countLetter","str","find","parseJwt","token","b64DecodeUnicode","c","computeTimeLeft","refreshTimeBeforeTokensExpirationInSecond","expiresAt","currentTimeUnixSecond","isTokensValid","tokens","extractTokenPayload","isTokensOidcValid","nonce","idTokenPayload","timeInSevenDays","_hideTokens","currentDatabaseElement","configurationName","accessTokenPayload","secureTokens","_idTokenPayload","keyNonce","idTokenExpiresAt","accessTokenExpiresAt","tokenRenewMode","isValid","reason","refreshToken","hideTokens","response","body","serializeHeaders","headers","headersObj","sleep","ms","resolve","_self","id","keepAliveJsonFilename","handleInstall","event","handleActivate","currentLoginCallbackConfigurationName","getCurrentDatabasesTokenEndpoint","databases","value","keepAliveAsync","originalRequest","isFromVanilla","init","originalRequestUrl","minSleepSeconds","handleFetch","currentDatabaseForRequestAccessToken","newRequest","currentDatabases","numberDatabase","maPromesse","reject","clonedRequest","actualBody","newBody","currentDb","keyRefreshToken","keyAccessToken","fetchPromise","text","keyCodeVerifier","err","trustedDomainsShowAccessToken","handleMessage","port","data","where","state","sessionState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OidcServiceWorker.js","sources":["../constants.ts","../utils/domains.ts","../utils/strings.ts","../utils/tokens.ts","../utils/serializeHeaders.ts","../utils/sleep.ts","../utils/codeVerifier.ts","../OidcServiceWorker.ts"],"sourcesContent":["const scriptFilename = 'OidcTrustedDomains.js'; /* global trustedDomains */\nconst acceptAnyDomainToken = '*';\n\ntype TokenType = {\n readonly REFRESH_TOKEN: string;\n readonly ACCESS_TOKEN: string;\n readonly NONCE_TOKEN: string;\n readonly CODE_VERIFIER: string;\n};\n\nconst TOKEN: TokenType = {\n REFRESH_TOKEN: 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\n ACCESS_TOKEN: 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER',\n NONCE_TOKEN: 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER',\n CODE_VERIFIER: 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER',\n};\n\ntype TokenRenewModeType = {\n readonly access_token_or_id_token_invalid: string;\n readonly access_token_invalid: string;\n readonly id_token_invalid: string;\n};\n\nconst TokenRenewMode: TokenRenewModeType = {\n access_token_or_id_token_invalid: 'access_token_or_id_token_invalid',\n access_token_invalid: 'access_token_invalid',\n id_token_invalid: 'id_token_invalid',\n};\n\nconst openidWellknownUrlEndWith = '/.well-known/openid-configuration';\n\nexport { scriptFilename, acceptAnyDomainToken, TOKEN, TokenRenewMode, openidWellknownUrlEndWith };\n","import { DomainDetails, TrustedDomains } from './../types';\nimport {\n acceptAnyDomainToken,\n openidWellknownUrlEndWith,\n scriptFilename,\n} from '../constants';\nimport { Database, Domain, OidcConfig } from '../types';\n\nfunction checkDomain(domains: Domain[], endpoint: string) {\n if (!endpoint) {\n return;\n }\n\n const domain = domains.find((domain) => {\n let testable: RegExp;\n\n if (typeof domain === 'string') {\n testable = new RegExp(`^${domain}`);\n } else {\n testable = domain;\n }\n\n return testable.test?.(endpoint);\n });\n if (!domain) {\n throw new Error(\n 'Domain ' +\n endpoint +\n ' is not trusted, please add domain in ' +\n scriptFilename\n );\n }\n}\n\nexport const getDomains = (trustedDomain: Domain[] | DomainDetails, type: 'oidc' | 'accessToken') => {\n if(Array.isArray(trustedDomain)) {\n return trustedDomain;\n }\n\n return trustedDomain[`${type}Domains`] ?? trustedDomain.domains ?? [];\n}\n\nconst getCurrentDatabaseDomain = (\n database: Database,\n url: string,\n trustedDomains: TrustedDomains\n) => {\n if (url.endsWith(openidWellknownUrlEndWith)) {\n return null;\n }\n for (const [key, currentDatabase] of Object.entries<OidcConfig>(database)) {\n const oidcServerConfiguration = currentDatabase.oidcServerConfiguration;\n\n if (!oidcServerConfiguration) {\n continue;\n }\n\n if (\n oidcServerConfiguration.tokenEndpoint &&\n url === oidcServerConfiguration.tokenEndpoint\n ) {\n continue;\n }\n if (\n oidcServerConfiguration.revocationEndpoint &&\n url === oidcServerConfiguration.revocationEndpoint\n ) {\n continue;\n }\n const trustedDomain = trustedDomains == null ? [] : trustedDomains[key];\n\n const domains = getDomains(trustedDomain, 'accessToken');\n const domainsToSendTokens = oidcServerConfiguration.userInfoEndpoint\n ? [oidcServerConfiguration.userInfoEndpoint, ...domains]\n : [...domains];\n\n let hasToSendToken = false;\n if (domainsToSendTokens.find((f) => f === acceptAnyDomainToken)) {\n hasToSendToken = true;\n } else {\n for (let i = 0; i < domainsToSendTokens.length; i++) {\n let domain = domainsToSendTokens[i];\n\n if (typeof domain === 'string') {\n domain = new RegExp(`^${domain}`);\n }\n\n if (domain.test?.(url)) {\n hasToSendToken = true;\n break;\n }\n }\n }\n\n if (hasToSendToken) {\n if (!currentDatabase.tokens) {\n return null;\n }\n return currentDatabase;\n }\n }\n return null;\n};\n\nexport { checkDomain, getCurrentDatabaseDomain };\n","/**\n * Count occurances of letter in string\n * @param str\n * @param find\n * @returns\n */\nexport function countLetter(str: string, find: string) {\n return str.split(find).length - 1;\n}\n","import { TOKEN, TokenRenewMode } from '../constants';\nimport { OidcConfig, OidcConfiguration, OidcServerConfiguration, Tokens } from '../types';\nimport { countLetter } from './strings';\n\nfunction parseJwt(token: string) {\n return JSON.parse(\n b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/'))\n );\n}\nfunction b64DecodeUnicode(str: string) {\n return decodeURIComponent(\n Array.prototype.map\n .call(\n atob(str),\n (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n )\n .join('')\n );\n}\n\nfunction computeTimeLeft(\n refreshTimeBeforeTokensExpirationInSecond: number,\n expiresAt: number\n) {\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n return Math.round(\n expiresAt -\n refreshTimeBeforeTokensExpirationInSecond -\n currentTimeUnixSecond\n );\n}\n\nfunction isTokensValid(tokens: Tokens | null) {\n if (!tokens) {\n return false;\n }\n return computeTimeLeft(0, tokens.expiresAt) > 0;\n}\n\nconst extractTokenPayload = (token?: string) => {\n try {\n if (!token) {\n return null;\n }\n if (countLetter(token, '.') === 2) {\n return parseJwt(token);\n } else {\n return null;\n }\n } catch (e) {\n console.warn(e);\n }\n return null;\n};\n\n// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation (excluding rules #1, #4, #5, #7, #8, #12, and #13 which did not apply).\n// https://github.com/openid/AppAuth-JS/issues/65\nconst isTokensOidcValid = (\n tokens: Tokens,\n nonce: string | null,\n oidcServerConfiguration: OidcServerConfiguration\n): { isValid: boolean; reason: string } => {\n if (tokens.idTokenPayload) {\n const idTokenPayload = tokens.idTokenPayload;\n // 2: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim.\n if (oidcServerConfiguration.issuer !== idTokenPayload.iss) {\n return { isValid: false, reason: 'Issuer does not match' };\n }\n // 3: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element. The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client.\n\n // 6: If the ID Token is received via direct communication between the Client and the Token Endpoint (which it is in this flow), the TLS server validation MAY be used to validate the issuer in place of checking the token signature. The Client MUST validate the signature of all other ID Tokens according to JWS [JWS] using the algorithm specified in the JWT alg Header Parameter. The Client MUST use the keys provided by the Issuer.\n\n // 9: The current time MUST be before the time represented by the exp Claim.\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n if (idTokenPayload.exp && idTokenPayload.exp < currentTimeUnixSecond) {\n return { isValid: false, reason: 'Token expired' };\n }\n // 10: The iat Claim can be used to reject tokens that were issued too far away from the current time, limiting the amount of time that nonces need to be stored to prevent attacks. The acceptable range is Client specific.\n const timeInSevenDays = 60 * 60 * 24 * 7;\n if (\n idTokenPayload.iat &&\n idTokenPayload.iat + timeInSevenDays < currentTimeUnixSecond\n ) {\n return { isValid: false, reason: 'Token is used from too long time' };\n }\n // 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific.\n if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) {\n return { isValid: false, reason: 'Nonce does not match' };\n }\n }\n return { isValid: true, reason: '' };\n};\n\nfunction _hideTokens(tokens: Tokens, currentDatabaseElement: OidcConfig, configurationName: string) {\n if (!tokens.issued_at) {\n const currentTimeUnixSecond = new Date().getTime() / 1000;\n tokens.issued_at = currentTimeUnixSecond;\n }\n\n const accessTokenPayload = extractTokenPayload(tokens.access_token);\n const secureTokens = {\n ...tokens,\n accessTokenPayload,\n };\n if (currentDatabaseElement.hideAccessToken) {\n secureTokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\n }\n tokens.accessTokenPayload = accessTokenPayload;\n\n let _idTokenPayload = null;\n if (tokens.id_token) {\n _idTokenPayload = extractTokenPayload(tokens.id_token);\n tokens.idTokenPayload = {..._idTokenPayload};\n if (_idTokenPayload.nonce && currentDatabaseElement.nonce != null) {\n const keyNonce =\n TOKEN.NONCE_TOKEN + '_' + currentDatabaseElement.configurationName;\n _idTokenPayload.nonce = keyNonce;\n }\n secureTokens.idTokenPayload = _idTokenPayload;\n }\n if (tokens.refresh_token) {\n secureTokens.refresh_token =\n TOKEN.REFRESH_TOKEN + '_' + configurationName;\n }\n\n const idTokenExpiresAt =\n _idTokenPayload && _idTokenPayload.exp\n ? _idTokenPayload.exp\n : Number.MAX_VALUE;\n const accessTokenExpiresAt =\n accessTokenPayload && accessTokenPayload.exp\n ? accessTokenPayload.exp\n : tokens.issued_at + tokens.expires_in;\n\n let expiresAt: number;\n const tokenRenewMode = (\n currentDatabaseElement.oidcConfiguration as OidcConfiguration\n ).token_renew_mode;\n if (tokenRenewMode === TokenRenewMode.access_token_invalid) {\n expiresAt = accessTokenExpiresAt;\n } else if (tokenRenewMode === TokenRenewMode.id_token_invalid) {\n expiresAt = idTokenExpiresAt;\n } else {\n expiresAt =\n idTokenExpiresAt < accessTokenExpiresAt\n ? idTokenExpiresAt\n : accessTokenExpiresAt;\n }\n secureTokens.expiresAt = expiresAt;\n\n tokens.expiresAt = expiresAt;\n const nonce = currentDatabaseElement.nonce\n ? currentDatabaseElement.nonce.nonce\n : null;\n const {isValid, reason} = isTokensOidcValid(\n tokens,\n nonce,\n currentDatabaseElement.oidcServerConfiguration as OidcServerConfiguration\n ); //TODO: Type assertion, could be null.\n if (!isValid) {\n throw Error(`Tokens are not OpenID valid, reason: ${reason}`);\n }\n\n // When refresh_token is not rotated we reuse ald refresh_token\n if (\n currentDatabaseElement.tokens != null &&\n 'refresh_token' in currentDatabaseElement.tokens &&\n !('refresh_token' in tokens)\n ) {\n const refreshToken = currentDatabaseElement.tokens.refresh_token;\n\n currentDatabaseElement.tokens = {\n ...tokens,\n refresh_token: refreshToken,\n };\n } else {\n currentDatabaseElement.tokens = tokens;\n }\n\n currentDatabaseElement.status = 'LOGGED_IN';\n return secureTokens;\n}\n\nfunction hideTokens(currentDatabaseElement: OidcConfig) {\n const configurationName = currentDatabaseElement.configurationName;\n return (response: Response) => {\n if (response.status !== 200) {\n return response;\n }\n return response.json().then<Response>((tokens: Tokens) => {\n const secureTokens = _hideTokens(tokens, currentDatabaseElement, configurationName);\n const body = JSON.stringify(secureTokens);\n return new Response(body, response);\n });\n };\n}\n\nexport {\n b64DecodeUnicode,\n computeTimeLeft,\n isTokensValid,\n extractTokenPayload,\n isTokensOidcValid,\n hideTokens,\n _hideTokens\n};\n","import { FetchHeaders } from '../types';\n\nfunction serializeHeaders(headers: Headers) {\n const headersObj: Record<string, string> = {};\n for (const key of (headers as FetchHeaders).keys()) {\n if (headers.has(key)) {\n headersObj[key] = headers.get(key) as string;\n }\n }\n return headersObj;\n}\nexport {serializeHeaders};","const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\nexport { sleep };\n","\n\nexport function replaceCodeVerifier(codeVerifier:string, newCodeVerifier:string):string {\n const regex = /code_verifier=[A-Za-z0-9_-]+/i;\n return codeVerifier.replace(regex, `code_verifier=${newCodeVerifier}`);\n}","import { acceptAnyDomainToken, TOKEN, scriptFilename } from './constants';\nimport {\n TrustedDomains,\n Database,\n OidcConfig,\n OidcConfiguration,\n MessageEventData,\n // TrustedDomainsShowAccessToken,\n} from './types';\nimport {\n checkDomain,\n getCurrentDatabaseDomain,\n hideTokens,\n isTokensValid,\n serializeHeaders,\n sleep,\n getDomains,\n} from './utils';\nimport {replaceCodeVerifier} from \"./utils/codeVerifier\";\n\nconst _self = self as ServiceWorkerGlobalScope & typeof globalThis;\n\ndeclare let trustedDomains: TrustedDomains;\n\n_self.importScripts(scriptFilename);\n\nconst id = Math.round(new Date().getTime() / 1000).toString();\n\nconst keepAliveJsonFilename = 'OidcKeepAliveServiceWorker.json';\nconst handleInstall = (event: ExtendableEvent) => {\n console.log('[OidcServiceWorker] service worker installed ' + id);\n event.waitUntil(_self.skipWaiting());\n};\n\nconst handleActivate = (event: ExtendableEvent) => {\n console.log('[OidcServiceWorker] service worker activated ' + id);\n event.waitUntil(_self.clients.claim());\n};\n\nlet currentLoginCallbackConfigurationName: string | null = null;\nconst database: Database = {\n default: {\n configurationName: 'default',\n tokens: null,\n status: null,\n state: null,\n codeVerifier: null,\n nonce: null,\n oidcServerConfiguration: null,\n hideAccessToken: true,\n },\n};\n\nconst getCurrentDatabasesTokenEndpoint = (database: Database, url: string) => {\n const databases: OidcConfig[] = [];\n for (const [, value] of Object.entries<OidcConfig>(database)) {\n if (\n value.oidcServerConfiguration != null &&\n url.startsWith(value.oidcServerConfiguration.tokenEndpoint)\n ) {\n databases.push(value);\n } else if (\n value.oidcServerConfiguration != null &&\n value.oidcServerConfiguration.revocationEndpoint &&\n url.startsWith(value.oidcServerConfiguration.revocationEndpoint)\n ) {\n databases.push(value);\n }\n }\n return databases;\n};\n\nconst keepAliveAsync = async (event: FetchEvent) => {\n const originalRequest = event.request;\n const isFromVanilla = originalRequest.headers.has('oidc-vanilla');\n const init = { status: 200, statusText: 'oidc-service-worker' };\n const response = new Response('{}', init);\n if (!isFromVanilla) {\n const originalRequestUrl = new URL(originalRequest.url);\n const minSleepSeconds = Number(originalRequestUrl.searchParams.get('minSleepSeconds')) || 240;\n for (let i = 0; i < minSleepSeconds; i++) {\n await sleep(1000 + Math.floor(Math.random() * 1000));\n const cache = await caches.open('oidc_dummy_cache');\n await cache.put(event.request, response.clone());\n }\n }\n return response;\n};\n\nconst handleFetch = async (event: FetchEvent) => {\n const originalRequest = event.request;\n const url = originalRequest.url;\n if (originalRequest.url.includes(keepAliveJsonFilename)) {\n event.respondWith(keepAliveAsync(event));\n return;\n }\n\n const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain(\n database,\n originalRequest.url,\n trustedDomains\n );\n if (\n currentDatabaseForRequestAccessToken &&\n currentDatabaseForRequestAccessToken.tokens &&\n currentDatabaseForRequestAccessToken.tokens.access_token\n ) {\n while (\n currentDatabaseForRequestAccessToken.tokens &&\n !isTokensValid(currentDatabaseForRequestAccessToken.tokens)\n ) {\n await sleep(200);\n }\n const newRequest =\n originalRequest.mode == 'navigate'\n ? new Request(originalRequest, {\n headers: {\n ...serializeHeaders(originalRequest.headers),\n authorization:\n 'Bearer ' +\n currentDatabaseForRequestAccessToken.tokens.access_token,\n },\n })\n : new Request(originalRequest, {\n headers: {\n ...serializeHeaders(originalRequest.headers),\n authorization:\n 'Bearer ' +\n currentDatabaseForRequestAccessToken.tokens.access_token,\n },\n mode: (\n currentDatabaseForRequestAccessToken.oidcConfiguration as OidcConfiguration\n ).service_worker_convert_all_requests_to_cors\n ? 'cors'\n : originalRequest.mode,\n });\n\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\n event.waitUntil(event.respondWith(fetch(newRequest)));\n\n return;\n }\n\n if (event.request.method !== 'POST') {\n return;\n }\n\n let currentDatabase: OidcConfig | null = null;\n const currentDatabases = getCurrentDatabasesTokenEndpoint(\n database,\n originalRequest.url\n );\n const numberDatabase = currentDatabases.length;\n if (numberDatabase > 0) {\n const maPromesse = new Promise<Response>((resolve, reject) => {\n const clonedRequest = originalRequest.clone();\n const response = clonedRequest.text().then((actualBody) => {\n if (\n actualBody.includes(TOKEN.REFRESH_TOKEN) ||\n actualBody.includes(TOKEN.ACCESS_TOKEN)\n ) {\n let newBody = actualBody;\n for (let i = 0; i < numberDatabase; i++) {\n const currentDb = currentDatabases[i];\n\n if (currentDb && currentDb.tokens != null) {\n const keyRefreshToken =\n TOKEN.REFRESH_TOKEN + '_' + currentDb.configurationName;\n if (actualBody.includes(keyRefreshToken)) {\n newBody = newBody.replace(\n keyRefreshToken,\n encodeURIComponent(currentDb.tokens.refresh_token as string)\n );\n currentDatabase = currentDb;\n break;\n }\n const keyAccessToken =\n TOKEN.ACCESS_TOKEN + '_' + currentDb.configurationName;\n if (actualBody.includes(keyAccessToken)) {\n newBody = newBody.replace(\n keyAccessToken,\n encodeURIComponent(currentDb.tokens.access_token)\n );\n currentDatabase = currentDb;\n break;\n }\n }\n }\n const fetchPromise = fetch(originalRequest, {\n body: newBody,\n method: clonedRequest.method,\n headers: {\n ...serializeHeaders(originalRequest.headers),\n },\n mode: clonedRequest.mode,\n cache: clonedRequest.cache,\n redirect: clonedRequest.redirect,\n referrer: clonedRequest.referrer,\n credentials: clonedRequest.credentials,\n integrity: clonedRequest.integrity,\n });\n\n if (\n currentDatabase &&\n currentDatabase.oidcServerConfiguration != null &&\n currentDatabase.oidcServerConfiguration.revocationEndpoint &&\n url.startsWith(\n currentDatabase.oidcServerConfiguration.revocationEndpoint\n )\n ) {\n return fetchPromise.then(async (response) => {\n const text = await response.text();\n return new Response(text, response);\n });\n }\n return fetchPromise.then(hideTokens(currentDatabase as OidcConfig)); //todo type assertion to OidcConfig but could be null, NEEDS REVIEW\n } else if (\n actualBody.includes('code_verifier=') &&\n currentLoginCallbackConfigurationName\n ) {\n currentDatabase = database[currentLoginCallbackConfigurationName];\n currentLoginCallbackConfigurationName = null;\n let newBody = actualBody;\n if (currentDatabase && currentDatabase.codeVerifier != null) {\n newBody = replaceCodeVerifier(newBody, currentDatabase.codeVerifier);\n }\n\n return fetch(originalRequest, {\n body: newBody,\n method: clonedRequest.method,\n headers: {\n ...serializeHeaders(originalRequest.headers),\n },\n mode: clonedRequest.mode,\n cache: clonedRequest.cache,\n redirect: clonedRequest.redirect,\n referrer: clonedRequest.referrer,\n credentials: clonedRequest.credentials,\n integrity: clonedRequest.integrity,\n }).then(hideTokens(currentDatabase));\n }\n return undefined;\n });\n response\n .then((r) => {\n if (r !== undefined) {\n resolve(r);\n } else {\n console.log('success undefined');\n reject(new Error('Response is undefined inside a success'));\n }\n })\n .catch((err) => {\n if (err !== undefined) {\n reject(err);\n } else {\n console.log('error undefined');\n reject(new Error('Response is undefined inside a error'));\n }\n });\n });\n\n //@ts-ignore -- TODO: review, waitUntil takes a promise, this returns a void\n event.waitUntil(event.respondWith(maPromesse));\n }\n};\n\ntype TrustedDomainsShowAccessToken = {\n [key: string]: boolean\n}\n\nconst trustedDomainsShowAccessToken: TrustedDomainsShowAccessToken = {};\n\nconst handleMessage = (event: ExtendableMessageEvent) => {\n const port = event.ports[0];\n const data = event.data as MessageEventData;\n const configurationName = data.configurationName;\n let currentDatabase = database[configurationName];\n if(trustedDomains== null){\n trustedDomains = {};\n }\n if (!currentDatabase) {\n \n if (trustedDomainsShowAccessToken[configurationName] === undefined) {\n let trustedDomain = trustedDomains[configurationName];\n trustedDomainsShowAccessToken[configurationName] = Array.isArray(trustedDomain) ? false : trustedDomain.showAccessToken;\n }\n database[configurationName] = {\n tokens: null,\n state: null,\n codeVerifier: null,\n oidcServerConfiguration: null,\n oidcConfiguration: undefined,\n nonce: null,\n status: null,\n configurationName,\n hideAccessToken: !trustedDomainsShowAccessToken[configurationName],\n };\n currentDatabase = database[configurationName];\n \n if (!trustedDomains[configurationName]) {\n trustedDomains[configurationName] = [];\n }\n }\n\n switch (data.type) {\n case 'clear':\n currentDatabase.tokens = null;\n currentDatabase.state = null;\n currentDatabase.codeVerifier = null;\n currentDatabase.status = data.data.status;\n port.postMessage({ configurationName });\n return;\n case 'init': {\n const oidcServerConfiguration = data.data.oidcServerConfiguration;\n let trustedDomain = trustedDomains[configurationName];\n const domains = getDomains(trustedDomain, 'oidc');\n if (!domains.find((f) => f === acceptAnyDomainToken)) {\n [\n oidcServerConfiguration.tokenEndpoint,\n oidcServerConfiguration.revocationEndpoint,\n oidcServerConfiguration.userInfoEndpoint,\n oidcServerConfiguration.issuer,\n ].forEach((url) => {\n checkDomain(domains, url);\n });\n }\n currentDatabase.oidcServerConfiguration = oidcServerConfiguration;\n currentDatabase.oidcConfiguration = data.data.oidcConfiguration;\n const where = data.data.where;\n if (\n where === 'loginCallbackAsync' ||\n where === 'tryKeepExistingSessionAsync'\n ) {\n currentLoginCallbackConfigurationName = configurationName;\n } else {\n currentLoginCallbackConfigurationName = null;\n }\n\n if (!currentDatabase.tokens) {\n port.postMessage({\n tokens: null,\n status: currentDatabase.status,\n configurationName,\n });\n } else {\n const tokens = {\n ...currentDatabase.tokens,\n };\n if(currentDatabase.hideAccessToken) {\n tokens.access_token = TOKEN.ACCESS_TOKEN + '_' + configurationName;\n }\n if (tokens.refresh_token) {\n tokens.refresh_token = TOKEN.REFRESH_TOKEN + '_' + configurationName;\n }\n if (\n tokens.idTokenPayload &&\n tokens.idTokenPayload.nonce &&\n currentDatabase.nonce != null\n ) {\n tokens.idTokenPayload.nonce =\n TOKEN.NONCE_TOKEN + '_' + configurationName;\n }\n port.postMessage({\n tokens,\n status: currentDatabase.status,\n configurationName,\n });\n }\n return;\n }\n case 'setState':\n currentDatabase.state = data.data.state;\n port.postMessage({ configurationName });\n return;\n case 'getState': {\n const state = currentDatabase.state;\n port.postMessage({ configurationName, state });\n return;\n }\n case 'setCodeVerifier':\n currentDatabase.codeVerifier = data.data.codeVerifier;\n port.postMessage({ configurationName });\n return;\n case 'getCodeVerifier': {\n port.postMessage({\n configurationName,\n codeVerifier: currentDatabase.codeVerifier != null ? TOKEN.CODE_VERIFIER + '_' + configurationName : null,\n });\n return;\n }\n case 'setSessionState':\n currentDatabase.sessionState = data.data.sessionState;\n port.postMessage({ configurationName });\n return;\n case 'getSessionState': {\n const sessionState = currentDatabase.sessionState;\n port.postMessage({ configurationName, sessionState });\n return;\n }\n case 'setNonce': {\n let nonce = data.data.nonce;\n if (nonce) {\n currentDatabase.nonce = nonce;\n }\n port.postMessage({configurationName});\n return;\n }\n case 'getNonce': {\n const keyNonce = TOKEN.NONCE_TOKEN + '_' + configurationName;\n const nonce = currentDatabase.nonce ? keyNonce : null;\n port.postMessage({configurationName, nonce});\n return;\n }\n default:\n currentDatabase.items = { ...data.data };\n port.postMessage({ configurationName });\n }\n};\n\n_self.addEventListener('install', handleInstall);\n_self.addEventListener('activate', handleActivate);\n_self.addEventListener('fetch', handleFetch);\n_self.addEventListener('message', handleMessage);\n"],"names":["scriptFilename","acceptAnyDomainToken","TOKEN","TokenRenewMode","openidWellknownUrlEndWith","checkDomain","domains","endpoint","domain","testable","_a","getDomains","trustedDomain","type","getCurrentDatabaseDomain","database","url","trustedDomains","key","currentDatabase","oidcServerConfiguration","domainsToSendTokens","hasToSendToken","f","i","countLetter","str","find","parseJwt","token","b64DecodeUnicode","c","computeTimeLeft","refreshTimeBeforeTokensExpirationInSecond","expiresAt","currentTimeUnixSecond","isTokensValid","tokens","extractTokenPayload","isTokensOidcValid","nonce","idTokenPayload","timeInSevenDays","_hideTokens","currentDatabaseElement","configurationName","accessTokenPayload","secureTokens","_idTokenPayload","keyNonce","idTokenExpiresAt","accessTokenExpiresAt","tokenRenewMode","isValid","reason","refreshToken","hideTokens","response","body","serializeHeaders","headers","headersObj","sleep","ms","resolve","replaceCodeVerifier","codeVerifier","newCodeVerifier","regex","_self","id","keepAliveJsonFilename","handleInstall","event","handleActivate","currentLoginCallbackConfigurationName","getCurrentDatabasesTokenEndpoint","databases","value","keepAliveAsync","originalRequest","isFromVanilla","init","originalRequestUrl","minSleepSeconds","handleFetch","currentDatabaseForRequestAccessToken","newRequest","currentDatabases","numberDatabase","maPromesse","reject","clonedRequest","actualBody","newBody","currentDb","keyRefreshToken","keyAccessToken","fetchPromise","text","r","err","trustedDomainsShowAccessToken","handleMessage","port","data","where","state","sessionState"],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export interface FetchHeaders extends Headers {
|
|
|
23
23
|
keys(): string[];
|
|
24
24
|
}
|
|
25
25
|
export type Status = 'LOGGED' | 'LOGGED_IN' | 'LOGGED_OUT' | 'NOT_CONNECTED' | 'LOGOUT_FROM_ANOTHER_TAB' | 'SESSION_LOST' | 'REQUIRE_SYNC_TOKENS' | 'FORCE_REFRESH' | null;
|
|
26
|
-
export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce';
|
|
26
|
+
export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce' | 'getNonce';
|
|
27
27
|
export type MessageData = {
|
|
28
28
|
status: Status;
|
|
29
29
|
oidcServerConfiguration: OidcServerConfiguration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,cAAc,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;CAC3C,GAAI,IAAI,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAAG;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,2CAA2C,EAAE,OAAO,CAAC;CACxD,CAAA;AAID,MAAM,WAAW,YAAa,SAAQ,OAAO;IACzC,IAAI,IAAI,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,yBAAyB,GAAG,cAAc,GAAG,qBAAqB,GAAG,eAAe,GAAG,IAAI,CAAC;AAC3K,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeVerifier.d.ts","sourceRoot":"","sources":["../../utils/codeVerifier.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,YAAY,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,GAAE,MAAM,CAGtF"}
|
package/service_worker/types.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface FetchHeaders extends Headers {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export type Status = 'LOGGED' | 'LOGGED_IN' | 'LOGGED_OUT' | 'NOT_CONNECTED' | 'LOGOUT_FROM_ANOTHER_TAB' | 'SESSION_LOST' | 'REQUIRE_SYNC_TOKENS' | 'FORCE_REFRESH' | null;
|
|
35
|
-
export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce';
|
|
35
|
+
export type MessageEventType = 'clear' | 'init' | 'setState' | 'getState' | 'setCodeVerifier' | 'getCodeVerifier' | 'setSessionState' | 'getSessionState' | 'setNonce' | 'getNonce';
|
|
36
36
|
|
|
37
37
|
export type MessageData = {
|
|
38
38
|
status: Status;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import {replaceCodeVerifier} from "../codeVerifier";
|
|
3
|
+
|
|
4
|
+
describe('replaceCodeVerifier should', () => {
|
|
5
|
+
|
|
6
|
+
it.each([
|
|
7
|
+
{body:'code=F5CDCDB9AADB9ADA59560DE80CAAA6688BC5C8BA1CC1C1F9839F7E7B32171B3D-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauthentication%2Fcallback&code_verifier=ONskPfcbfAYPp5xqhpMstHSz017896R7sy3wqrRdqC8lYB8yQciCCNLooqLC9qHFTF2FFhDQP4m8PEFNSry8eoCbQ9baYcoWjF1bEH6vGWExdTIMqauicjeVxqz58FO8', bodyExpected: 'code=F5CDCDB9AADB9ADA59560DE80CAAA6688BC5C8BA1CC1C1F9839F7E7B32171B3D-1&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauthentication%2Fcallback&code_verifier=1234'},
|
|
8
|
+
{body:'code=F5CDCDB9AADB9ADA59560DE80CAAA6688BC5C8BA1CC1C1F9839F7E7B32171B3D-1&code_verifier=ONskPfcbfAYPp5xqhpMstHSz017896R7sy3wqrRdqC8lYB8yQciCCNLooqLC9qHFTF2FFhDQP4m8PEFNSry8eoCbQ9baYcoWjF1bEH6vGWExdTIMqauicjeVxqz58FO8&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauthentication%2Fcallback', bodyExpected: 'code=F5CDCDB9AADB9ADA59560DE80CAAA6688BC5C8BA1CC1C1F9839F7E7B32171B3D-1&code_verifier=1234&grant_type=authorization_code&client_id=interactive.public.short&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauthentication%2Fcallback'},
|
|
9
|
+
]) ('inject new codeVerifier', async ({ body, bodyExpected}) => {
|
|
10
|
+
const result = replaceCodeVerifier(body, '1234');
|
|
11
|
+
expect(bodyExpected).toEqual(result);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
});
|
|
@@ -84,7 +84,7 @@ const isTokensOidcValid = (
|
|
|
84
84
|
return { isValid: false, reason: 'Token is used from too long time' };
|
|
85
85
|
}
|
|
86
86
|
// 11: If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked to verify that it is the same value as the one that was sent in the Authentication Request. The Client SHOULD check the nonce value for replay attacks. The precise method for detecting replay attacks is Client specific.
|
|
87
|
-
if (idTokenPayload.nonce && idTokenPayload.nonce !== nonce) {
|
|
87
|
+
if (nonce && idTokenPayload.nonce && idTokenPayload.nonce !== nonce) {
|
|
88
88
|
return { isValid: false, reason: 'Nonce does not match' };
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -6,10 +6,6 @@ import SilentCallbackComponent from '../default-component/SilentCallback.compone
|
|
|
6
6
|
import SilentLoginComponent from '../default-component/SilentLogin.component.js';
|
|
7
7
|
import { CustomHistory } from './withRouter.js';
|
|
8
8
|
|
|
9
|
-
const defaultProps: Partial<OidcRoutesProps> = {
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
|
|
13
9
|
type OidcRoutesProps = {
|
|
14
10
|
callbackSuccessComponent?: ComponentType;
|
|
15
11
|
callbackErrorComponent?: ComponentType;
|
|
@@ -64,7 +60,4 @@ const OidcRoutes: FC<PropsWithChildren<OidcRoutesProps>> = ({
|
|
|
64
60
|
}
|
|
65
61
|
};
|
|
66
62
|
|
|
67
|
-
// @ts-ignore
|
|
68
|
-
OidcRoutes.defaultProps = defaultProps;
|
|
69
|
-
|
|
70
63
|
export default React.memo(OidcRoutes);
|
|
@@ -59,7 +59,7 @@ export const initSession = (configurationName, storage = sessionStorage) => {
|
|
|
59
59
|
return storage[`oidc.state.${configurationName}`];
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
const setStateAsync = async (state) => {
|
|
62
|
+
const setStateAsync = async (state:string) => {
|
|
63
63
|
storage[`oidc.state.${configurationName}`] = state;
|
|
64
64
|
};
|
|
65
65
|
|
|
@@ -230,7 +230,7 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
230
230
|
}
|
|
231
231
|
};
|
|
232
232
|
|
|
233
|
-
const setSessionStateAsync = (sessionState) => {
|
|
233
|
+
const setSessionStateAsync = (sessionState:string) => {
|
|
234
234
|
return sendMessageAsync(registration)({ type: 'setSessionState', data: { sessionState }, configurationName });
|
|
235
235
|
};
|
|
236
236
|
|
|
@@ -241,14 +241,19 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
241
241
|
};
|
|
242
242
|
|
|
243
243
|
const setNonceAsync = (nonce) => {
|
|
244
|
+
sessionStorage['oidc.nonce'] = nonce.nonce;
|
|
244
245
|
return sendMessageAsync(registration)({ type: 'setNonce', data: { nonce }, configurationName });
|
|
245
246
|
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
const getNonceAsync = async () => {
|
|
248
|
+
// @ts-ignore
|
|
249
|
+
const result = await sendMessageAsync(registration)({ type: 'getNonce', data: null, configurationName });
|
|
249
250
|
// @ts-ignore
|
|
250
|
-
|
|
251
|
-
|
|
251
|
+
let nonce = result.nonce;
|
|
252
|
+
if (!nonce) {
|
|
253
|
+
nonce = sessionStorage['oidc.nonce'];
|
|
254
|
+
console.warn('nonce not found in service worker, using sessionStorage');
|
|
255
|
+
}
|
|
256
|
+
return { nonce };
|
|
252
257
|
};
|
|
253
258
|
|
|
254
259
|
let getLoginParamsCache = null;
|
|
@@ -267,20 +272,32 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
267
272
|
const getStateAsync = async () => {
|
|
268
273
|
const result = await sendMessageAsync(registration)({ type: 'getState', data: null, configurationName });
|
|
269
274
|
// @ts-ignore
|
|
270
|
-
|
|
275
|
+
let state = result.state;
|
|
276
|
+
if (!state) {
|
|
277
|
+
state = sessionStorage[`oidc.state.${configurationName}`];
|
|
278
|
+
console.warn('state not found in service worker, using sessionStorage');
|
|
279
|
+
}
|
|
280
|
+
return state;
|
|
271
281
|
};
|
|
272
282
|
|
|
273
|
-
const setStateAsync = async (state) => {
|
|
283
|
+
const setStateAsync = async (state:string) => {
|
|
284
|
+
sessionStorage[`oidc.state.${configurationName}`] = state;
|
|
274
285
|
return sendMessageAsync(registration)({ type: 'setState', data: { state }, configurationName });
|
|
275
286
|
};
|
|
276
287
|
|
|
277
288
|
const getCodeVerifierAsync = async () => {
|
|
278
289
|
const result = await sendMessageAsync(registration)({ type: 'getCodeVerifier', data: null, configurationName });
|
|
279
290
|
// @ts-ignore
|
|
280
|
-
|
|
291
|
+
let codeVerifier = result.codeVerifier;
|
|
292
|
+
if (!codeVerifier) {
|
|
293
|
+
codeVerifier = sessionStorage[`oidc.code_verifier.${configurationName}`];
|
|
294
|
+
console.warn('codeVerifier not found in service worker, using sessionStorage');
|
|
295
|
+
}
|
|
296
|
+
return codeVerifier;
|
|
281
297
|
};
|
|
282
298
|
|
|
283
|
-
const setCodeVerifierAsync = async (codeVerifier) => {
|
|
299
|
+
const setCodeVerifierAsync = async (codeVerifier:string) => {
|
|
300
|
+
sessionStorage[`oidc.code_verifier.${configurationName}`] = codeVerifier;
|
|
284
301
|
return sendMessageAsync(registration)({ type: 'setCodeVerifier', data: { codeVerifier }, configurationName });
|
|
285
302
|
};
|
|
286
303
|
|