@axa-fr/react-oidc 6.13.3 → 6.14.0
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/README.md +1 -0
- package/dist/OidcServiceWorker.js +36 -8
- package/dist/vanilla/crypto.d.ts +4 -0
- package/dist/vanilla/crypto.d.ts.map +1 -0
- package/dist/vanilla/crypto.js +81 -0
- package/dist/vanilla/crypto.js.map +1 -0
- package/dist/vanilla/initSession.d.ts +6 -4
- package/dist/vanilla/initSession.d.ts.map +1 -1
- package/dist/vanilla/initSession.js +22 -15
- package/dist/vanilla/initSession.js.map +1 -1
- package/dist/vanilla/initWorker.d.ts +4 -2
- package/dist/vanilla/initWorker.d.ts.map +1 -1
- package/dist/vanilla/initWorker.js +39 -18
- package/dist/vanilla/initWorker.js.map +1 -1
- package/dist/vanilla/login.d.ts +5 -1
- package/dist/vanilla/login.d.ts.map +1 -1
- package/dist/vanilla/login.js +70 -143
- package/dist/vanilla/login.js.map +1 -1
- package/dist/vanilla/oidc.d.ts +10 -6
- package/dist/vanilla/oidc.d.ts.map +1 -1
- package/dist/vanilla/oidc.js +14 -7
- package/dist/vanilla/oidc.js.map +1 -1
- package/dist/vanilla/requests.d.ts +14 -0
- package/dist/vanilla/requests.d.ts.map +1 -1
- package/dist/vanilla/requests.js +56 -1
- package/dist/vanilla/requests.js.map +1 -1
- package/dist/vanilla/route-utils.js +2 -2
- package/dist/vanilla/route-utils.js.map +1 -1
- package/dist/vanilla/types.d.ts +1 -0
- package/dist/vanilla/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/oidc/vanilla/OidcServiceWorker.js +36 -8
- package/src/oidc/vanilla/crypto.ts +57 -0
- package/src/oidc/vanilla/initSession.ts +25 -15
- package/src/oidc/vanilla/initWorker.ts +43 -18
- package/src/oidc/vanilla/login.ts +76 -148
- package/src/oidc/vanilla/oidc.ts +22 -13
- package/src/oidc/vanilla/requests.spec.ts +4 -0
- package/src/oidc/vanilla/requests.ts +55 -0
- package/src/oidc/vanilla/route-utils.ts +2 -2
- package/src/oidc/vanilla/types.ts +1 -0
- package/dist/vanilla/memoryStorageBackend.d.ts +0 -11
- package/dist/vanilla/memoryStorageBackend.d.ts.map +0 -1
- package/dist/vanilla/memoryStorageBackend.js +0 -31
- package/dist/vanilla/memoryStorageBackend.js.map +0 -1
- package/dist/vanilla/noHashQueryStringUtils.d.ts +0 -8
- package/dist/vanilla/noHashQueryStringUtils.d.ts.map +0 -1
- package/dist/vanilla/noHashQueryStringUtils.js +0 -32
- package/dist/vanilla/noHashQueryStringUtils.js.map +0 -1
- package/src/oidc/vanilla/memoryStorageBackend.ts +0 -40
- package/src/oidc/vanilla/noHashQueryStringUtils.ts +0 -32
package/dist/vanilla/requests.js
CHANGED
|
@@ -9,8 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.performTokenRequestAsync = exports.performRevocationRequestAsync = exports.TOKEN_TYPE = exports.fetchFromIssuer = void 0;
|
|
12
|
+
exports.performFirstTokenRequestAsync = exports.performAuthorizationRequestAsync = exports.performTokenRequestAsync = exports.performRevocationRequestAsync = exports.TOKEN_TYPE = exports.fetchFromIssuer = void 0;
|
|
13
13
|
const cache_1 = require("./cache");
|
|
14
|
+
const crypto_1 = require("./crypto");
|
|
14
15
|
const oidc_1 = require("./oidc");
|
|
15
16
|
const parseTokens_1 = require("./parseTokens");
|
|
16
17
|
const oneHourSecond = 60 * 60;
|
|
@@ -116,4 +117,58 @@ const performTokenRequestAsync = (url, details, extras, oldTokens, tokenRenewMod
|
|
|
116
117
|
};
|
|
117
118
|
});
|
|
118
119
|
exports.performTokenRequestAsync = performTokenRequestAsync;
|
|
120
|
+
const performAuthorizationRequestAsync = (storage) => (url, extras) => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
|
+
extras = extras ? Object.assign({}, extras) : {};
|
|
122
|
+
const codeVerifier = (0, crypto_1.generateRandom)(128);
|
|
123
|
+
const codeChallenge = yield (0, crypto_1.deriveChallengeAsync)(codeVerifier);
|
|
124
|
+
yield storage.setCodeVerifierAsync(codeVerifier);
|
|
125
|
+
yield storage.setStateAsync(extras.state);
|
|
126
|
+
extras.code_challenge = codeChallenge;
|
|
127
|
+
extras.code_challenge_method = 'S256';
|
|
128
|
+
let queryString = '';
|
|
129
|
+
if (extras) {
|
|
130
|
+
for (const [key, value] of Object.entries(extras)) {
|
|
131
|
+
if (queryString === '') {
|
|
132
|
+
queryString += '?';
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
queryString += '&';
|
|
136
|
+
}
|
|
137
|
+
queryString += `${key}=${encodeURIComponent(value)}`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
window.location.href = `${url}${queryString}`;
|
|
141
|
+
});
|
|
142
|
+
exports.performAuthorizationRequestAsync = performAuthorizationRequestAsync;
|
|
143
|
+
const performFirstTokenRequestAsync = (storage) => (url, extras, tokenRenewMode, timeoutMs = 10000) => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
+
extras = extras ? Object.assign({}, extras) : {};
|
|
145
|
+
extras.code_verifier = yield storage.getCodeVerifierAsync();
|
|
146
|
+
const formBody = [];
|
|
147
|
+
for (const property in extras) {
|
|
148
|
+
const encodedKey = encodeURIComponent(property);
|
|
149
|
+
const encodedValue = encodeURIComponent(extras[property]);
|
|
150
|
+
formBody.push(`${encodedKey}=${encodedValue}`);
|
|
151
|
+
}
|
|
152
|
+
const formBodyString = formBody.join('&');
|
|
153
|
+
const response = yield internalFetch(url, {
|
|
154
|
+
method: 'POST',
|
|
155
|
+
headers: {
|
|
156
|
+
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
|
|
157
|
+
},
|
|
158
|
+
body: formBodyString,
|
|
159
|
+
}, timeoutMs);
|
|
160
|
+
yield Promise.all([storage.setCodeVerifierAsync(null), storage.setStateAsync(null)]);
|
|
161
|
+
if (response.status !== 200) {
|
|
162
|
+
return { success: false, status: response.status };
|
|
163
|
+
}
|
|
164
|
+
const tokens = yield response.json();
|
|
165
|
+
return {
|
|
166
|
+
success: true,
|
|
167
|
+
data: {
|
|
168
|
+
state: extras.state,
|
|
169
|
+
tokens: (0, parseTokens_1.parseOriginalTokens)(tokens, null, tokenRenewMode),
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
exports.performFirstTokenRequestAsync = performFirstTokenRequestAsync;
|
|
119
174
|
//# sourceMappingURL=requests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/oidc/vanilla/requests.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiD;AACjD,iCAA+D;AAC/D,+CAAoD;
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/oidc/vanilla/requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const getLocation = (href) => {
|
|
|
17
17
|
search = splits[1];
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
if (search) {
|
|
20
|
+
if (search.startsWith('?')) {
|
|
21
21
|
search = search.slice(1);
|
|
22
22
|
}
|
|
23
23
|
return (match && {
|
|
@@ -64,7 +64,7 @@ const parseQueryString = (queryString) => {
|
|
|
64
64
|
// Convert the array of strings into an object
|
|
65
65
|
for (i = 0, l = queries.length; i < l; i++) {
|
|
66
66
|
temp = queries[i].split('=');
|
|
67
|
-
params[decodeURIComponent(temp[0])] = temp[1];
|
|
67
|
+
params[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
|
|
68
68
|
}
|
|
69
69
|
return params;
|
|
70
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-utils.js","sourceRoot":"","sources":["../../src/oidc/vanilla/route-utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;IACtB,6CAA6C;IAC3C,oFAAoF,CACvF,CAAC;IACF,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAClC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAElB,IAAI,IAAI,EAAE;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAED,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"route-utils.js","sourceRoot":"","sources":["../../src/oidc/vanilla/route-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/vanilla/types.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare type OidcConfiguration = {
|
|
|
12
12
|
token_request_timeout?: number;
|
|
13
13
|
service_worker_relative_url?: string;
|
|
14
14
|
service_worker_only?: boolean;
|
|
15
|
+
service_worker_convert_all_requests_to_cors?: boolean;
|
|
15
16
|
extras?: StringMap;
|
|
16
17
|
token_request_extras?: StringMap;
|
|
17
18
|
storage?: Storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/types.ts"],"names":[],"mappings":"AACA,oBAAY,iBAAiB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAC,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C,CAAC,EAAE,MAAM,CAAC;IACpD,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IACjD,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2BAA2B,CAAC,EAAC,MAAM,CAAC;IACpC,mBAAmB,CAAC,EAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAC,SAAS,CAAC;IAClB,oBAAoB,CAAC,EAAC,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAC,MAAM,CAAC;IAC7B,MAAM,EAAC,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/types.ts"],"names":[],"mappings":"AACA,oBAAY,iBAAiB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAC,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C,CAAC,EAAE,MAAM,CAAC;IACpD,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IACjD,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2BAA2B,CAAC,EAAC,MAAM,CAAC;IACpC,mBAAmB,CAAC,EAAC,OAAO,CAAC;IAC7B,2CAA2C,CAAC,EAAC,OAAO,CAAC;IACrD,MAAM,CAAC,EAAC,SAAS,CAAC;IAClB,oBAAoB,CAAC,EAAC,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAC,MAAM,CAAC;IAC7B,MAAM,EAAC,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axa-fr/react-oidc",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.14.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"jsnext:main": "dist/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"lint": "eslint src"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"
|
|
43
|
+
"base64-js": "1.5.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -22,7 +22,8 @@ const database = {
|
|
|
22
22
|
configurationName: 'default',
|
|
23
23
|
tokens: null,
|
|
24
24
|
status: null,
|
|
25
|
-
|
|
25
|
+
state: null,
|
|
26
|
+
codeVerifier: null,
|
|
26
27
|
nonce: null,
|
|
27
28
|
oidcServerConfiguration: null,
|
|
28
29
|
},
|
|
@@ -249,6 +250,7 @@ const serializeHeaders = (headers) => {
|
|
|
249
250
|
const REFRESH_TOKEN = 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
250
251
|
const ACCESS_TOKEN = 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
251
252
|
const NONCE_TOKEN = 'NONCE_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
253
|
+
const CODE_VERIFIER = 'CODE_VERIFIER_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
252
254
|
|
|
253
255
|
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
254
256
|
|
|
@@ -286,6 +288,7 @@ const handleFetch = async (event) => {
|
|
|
286
288
|
...serializeHeaders(originalRequest.headers),
|
|
287
289
|
authorization: 'Bearer ' + currentDatabaseForRequestAccessToken.tokens.access_token,
|
|
288
290
|
},
|
|
291
|
+
mode: currentDatabaseForRequestAccessToken.oidcConfiguration.service_worker_convert_all_requests_to_cors ? "cors" : originalRequest.mode,
|
|
289
292
|
});
|
|
290
293
|
event.waitUntil(event.respondWith(fetch(newRequest)));
|
|
291
294
|
return;
|
|
@@ -345,8 +348,16 @@ const handleFetch = async (event) => {
|
|
|
345
348
|
} else if (actualBody.includes('code_verifier=') && currentLoginCallbackConfigurationName) {
|
|
346
349
|
currentDatabase = database[currentLoginCallbackConfigurationName];
|
|
347
350
|
currentLoginCallbackConfigurationName = null;
|
|
351
|
+
let newBody = actualBody;
|
|
352
|
+
if (currentDatabase && currentDatabase.codeVerifier != null) {
|
|
353
|
+
const keyCodeVerifier = CODE_VERIFIER + '_' + currentDatabase.configurationName;
|
|
354
|
+
if (actualBody.includes(keyCodeVerifier)) {
|
|
355
|
+
newBody = newBody.replace(keyCodeVerifier, currentDatabase.codeVerifier);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
348
359
|
return fetch(originalRequest, {
|
|
349
|
-
body:
|
|
360
|
+
body: newBody,
|
|
350
361
|
method: clonedRequest.method,
|
|
351
362
|
headers: {
|
|
352
363
|
...serializeHeaders(originalRequest.headers),
|
|
@@ -412,7 +423,8 @@ addEventListener('message', event => {
|
|
|
412
423
|
if (!currentDatabase) {
|
|
413
424
|
database[configurationName] = {
|
|
414
425
|
tokens: null,
|
|
415
|
-
|
|
426
|
+
state: null,
|
|
427
|
+
codeVerifier: null,
|
|
416
428
|
oidcServerConfiguration: null,
|
|
417
429
|
oidcConfiguration: null,
|
|
418
430
|
status: null,
|
|
@@ -425,12 +437,10 @@ addEventListener('message', event => {
|
|
|
425
437
|
}
|
|
426
438
|
|
|
427
439
|
switch (data.type) {
|
|
428
|
-
case 'loadItems':
|
|
429
|
-
port.postMessage(database[configurationName].items);
|
|
430
|
-
return;
|
|
431
440
|
case 'clear':
|
|
432
441
|
currentDatabase.tokens = null;
|
|
433
|
-
currentDatabase.
|
|
442
|
+
currentDatabase.state = null;
|
|
443
|
+
currentDatabase.codeVerifier = null;
|
|
434
444
|
currentDatabase.status = data.data.status;
|
|
435
445
|
port.postMessage({ configurationName });
|
|
436
446
|
return;
|
|
@@ -478,7 +488,25 @@ addEventListener('message', event => {
|
|
|
478
488
|
}
|
|
479
489
|
return;
|
|
480
490
|
}
|
|
481
|
-
|
|
491
|
+
case 'setState':
|
|
492
|
+
currentDatabase.state = data.data.state;
|
|
493
|
+
port.postMessage({ configurationName });
|
|
494
|
+
return;
|
|
495
|
+
case 'getState':
|
|
496
|
+
{
|
|
497
|
+
const state = currentDatabase.state;
|
|
498
|
+
port.postMessage({ configurationName, state });
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
case 'setCodeVerifier':
|
|
502
|
+
currentDatabase.codeVerifier = data.data.codeVerifier;
|
|
503
|
+
port.postMessage({ configurationName });
|
|
504
|
+
return;
|
|
505
|
+
case 'getCodeVerifier':
|
|
506
|
+
{
|
|
507
|
+
port.postMessage({ configurationName, codeVerifier: CODE_VERIFIER + '_' + configurationName });
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
482
510
|
case 'setSessionState':
|
|
483
511
|
currentDatabase.sessionState = data.data.sessionState;
|
|
484
512
|
port.postMessage({ configurationName });
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as base64 from 'base64-js';
|
|
2
|
+
|
|
3
|
+
const hasCrypto = typeof window !== 'undefined' && !!(window.crypto as any);
|
|
4
|
+
const hasSubtleCrypto = hasCrypto && !!(window.crypto.subtle as any);
|
|
5
|
+
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
6
|
+
|
|
7
|
+
const bufferToString = (buffer: Uint8Array) => {
|
|
8
|
+
const state = [];
|
|
9
|
+
for (let i = 0; i < buffer.byteLength; i += 1) {
|
|
10
|
+
const index = buffer[i] % charset.length;
|
|
11
|
+
state.push(charset[index]);
|
|
12
|
+
}
|
|
13
|
+
return state.join('');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const urlSafe = (buffer: Uint8Array): string => {
|
|
17
|
+
const encoded = base64.fromByteArray(new Uint8Array(buffer));
|
|
18
|
+
console.log(encoded);
|
|
19
|
+
return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const generateRandom = (size: number) => {
|
|
23
|
+
const buffer = new Uint8Array(size);
|
|
24
|
+
if (hasCrypto) {
|
|
25
|
+
window.crypto.getRandomValues(buffer);
|
|
26
|
+
} else {
|
|
27
|
+
// fall back to Math.random() if nothing else is available
|
|
28
|
+
for (let i = 0; i < size; i += 1) {
|
|
29
|
+
buffer[i] = (Math.random() * charset.length) | 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return bufferToString(buffer);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export function textEncodeLite(str: string) {
|
|
36
|
+
const buf = new ArrayBuffer(str.length);
|
|
37
|
+
const bufView = new Uint8Array(buf);
|
|
38
|
+
|
|
39
|
+
for (let i = 0; i < str.length; i++) {
|
|
40
|
+
bufView[i] = str.charCodeAt(i);
|
|
41
|
+
}
|
|
42
|
+
return bufView;
|
|
43
|
+
}
|
|
44
|
+
export const deriveChallengeAsync = (code: string): Promise<string> => {
|
|
45
|
+
if (code.length < 43 || code.length > 128) {
|
|
46
|
+
return Promise.reject(new Error('Invalid code length.'));
|
|
47
|
+
}
|
|
48
|
+
if (!hasSubtleCrypto) {
|
|
49
|
+
return Promise.reject(new Error('window.crypto.subtle is unavailable.'));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
crypto.subtle.digest('SHA-256', textEncodeLite(code)).then(buffer => {
|
|
54
|
+
return resolve(urlSafe(new Uint8Array(buffer)));
|
|
55
|
+
}, error => reject(error));
|
|
56
|
+
});
|
|
57
|
+
};
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
export const initSession = (configurationName, storage = sessionStorage) => {
|
|
2
|
-
const saveItemsAsync = (items) => {
|
|
3
|
-
storage[`oidc.items.${configurationName}`] = JSON.stringify(items);
|
|
4
|
-
return Promise.resolve();
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
const loadItemsAsync = () => {
|
|
8
|
-
return Promise.resolve(JSON.parse(storage[`oidc.items.${configurationName}`]));
|
|
9
|
-
};
|
|
10
1
|
|
|
2
|
+
export const initSession = (configurationName, storage = sessionStorage) => {
|
|
11
3
|
const clearAsync = (status) => {
|
|
12
4
|
storage[`oidc.${configurationName}`] = JSON.stringify({ tokens: null, status });
|
|
13
5
|
return Promise.resolve();
|
|
@@ -26,11 +18,11 @@ export const initSession = (configurationName, storage = sessionStorage) => {
|
|
|
26
18
|
storage[`oidc.${configurationName}`] = JSON.stringify({ tokens });
|
|
27
19
|
};
|
|
28
20
|
|
|
29
|
-
const
|
|
21
|
+
const setSessionStateAsync = async (sessionState) => {
|
|
30
22
|
storage[`oidc.session_state.${configurationName}`] = sessionState;
|
|
31
23
|
};
|
|
32
24
|
|
|
33
|
-
const
|
|
25
|
+
const getSessionStateAsync = async () => {
|
|
34
26
|
return storage[`oidc.session_state.${configurationName}`];
|
|
35
27
|
};
|
|
36
28
|
|
|
@@ -63,18 +55,36 @@ export const initSession = (configurationName, storage = sessionStorage) => {
|
|
|
63
55
|
return getLoginParamsCache;
|
|
64
56
|
};
|
|
65
57
|
|
|
58
|
+
const getStateAsync = async () => {
|
|
59
|
+
return storage[`oidc.state.${configurationName}`];
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const setStateAsync = async (state) => {
|
|
63
|
+
storage[`oidc.state.${configurationName}`] = state;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const getCodeVerifierAsync = async () => {
|
|
67
|
+
return storage[`oidc.code_verifier.${configurationName}`];
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const setCodeVerifierAsync = async (codeVerifier) => {
|
|
71
|
+
storage[`oidc.code_verifier.${configurationName}`] = codeVerifier;
|
|
72
|
+
};
|
|
73
|
+
|
|
66
74
|
return {
|
|
67
|
-
saveItemsAsync,
|
|
68
|
-
loadItemsAsync,
|
|
69
75
|
clearAsync,
|
|
70
76
|
initAsync,
|
|
71
77
|
setTokens,
|
|
72
78
|
getTokens,
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
setSessionStateAsync,
|
|
80
|
+
getSessionStateAsync,
|
|
75
81
|
setNonceAsync,
|
|
76
82
|
getNonceAsync,
|
|
77
83
|
setLoginParams,
|
|
78
84
|
getLoginParams,
|
|
85
|
+
getStateAsync,
|
|
86
|
+
setStateAsync,
|
|
87
|
+
getCodeVerifierAsync,
|
|
88
|
+
setCodeVerifierAsync,
|
|
79
89
|
};
|
|
80
90
|
};
|
|
@@ -189,22 +189,6 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
189
189
|
});
|
|
190
190
|
});
|
|
191
191
|
|
|
192
|
-
const saveItemsAsync = (items) => {
|
|
193
|
-
// iOS kill Service Worker when domain we leave domain
|
|
194
|
-
if (operatingSystem.os === 'iOS') {
|
|
195
|
-
const session = initSession(configurationName);
|
|
196
|
-
return session.saveItemsAsync(items);
|
|
197
|
-
}
|
|
198
|
-
return sendMessageAsync(registration)({ type: 'saveItems', data: items, configurationName });
|
|
199
|
-
};
|
|
200
|
-
const loadItemsAsync = () => {
|
|
201
|
-
// iOS kill Service Worker when domain we leave domain
|
|
202
|
-
if (operatingSystem.os === 'iOS') {
|
|
203
|
-
const session = initSession(configurationName);
|
|
204
|
-
return session.loadItemsAsync();
|
|
205
|
-
}
|
|
206
|
-
return sendMessageAsync(registration)({ type: 'loadItems', data: null, configurationName });
|
|
207
|
-
};
|
|
208
192
|
const clearAsync = async (status) => {
|
|
209
193
|
// iOS kill Service Worker when domain we leave domain
|
|
210
194
|
if (operatingSystem.os === 'iOS') {
|
|
@@ -274,9 +258,46 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
274
258
|
return getLoginParamsCache;
|
|
275
259
|
};
|
|
276
260
|
|
|
261
|
+
const getStateAsync = async () => {
|
|
262
|
+
// iOS kill Service Worker when domain we leave domain
|
|
263
|
+
if (operatingSystem.os === 'iOS') {
|
|
264
|
+
const session = initSession(configurationName);
|
|
265
|
+
return session.getStateAsync();
|
|
266
|
+
}
|
|
267
|
+
const result = await sendMessageAsync(registration)({ type: 'getState', data: null, configurationName });
|
|
268
|
+
// @ts-ignore
|
|
269
|
+
return result.state;
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
const setStateAsync = async (state) => {
|
|
273
|
+
// iOS kill Service Worker when domain we leave domain
|
|
274
|
+
if (operatingSystem.os === 'iOS') {
|
|
275
|
+
const session = initSession(configurationName);
|
|
276
|
+
return session.setStateAsync(state);
|
|
277
|
+
}
|
|
278
|
+
return sendMessageAsync(registration)({ type: 'setState', data: { state }, configurationName });
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
const getCodeVerifierAsync = async () => {
|
|
282
|
+
// iOS kill Service Worker when domain we leave domain
|
|
283
|
+
if (operatingSystem.os === 'iOS') {
|
|
284
|
+
const session = initSession(configurationName);
|
|
285
|
+
return session.getCodeVerifierAsync();
|
|
286
|
+
}
|
|
287
|
+
const result = await sendMessageAsync(registration)({ type: 'getCodeVerifier', data: null, configurationName });
|
|
288
|
+
// @ts-ignore
|
|
289
|
+
return result.codeVerifier;
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
const setCodeVerifierAsync = async (codeVerifier) => {
|
|
293
|
+
if (operatingSystem.os === 'iOS') {
|
|
294
|
+
const session = initSession(configurationName);
|
|
295
|
+
return session.setCodeVerifierAsync(codeVerifier);
|
|
296
|
+
}
|
|
297
|
+
return sendMessageAsync(registration)({ type: 'setCodeVerifier', data: { codeVerifier }, configurationName });
|
|
298
|
+
};
|
|
299
|
+
|
|
277
300
|
return {
|
|
278
|
-
saveItemsAsync,
|
|
279
|
-
loadItemsAsync,
|
|
280
301
|
clearAsync,
|
|
281
302
|
initAsync,
|
|
282
303
|
startKeepAliveServiceWorker,
|
|
@@ -288,5 +309,9 @@ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName
|
|
|
288
309
|
unregisterAsync,
|
|
289
310
|
setLoginParams,
|
|
290
311
|
getLoginParams,
|
|
312
|
+
getStateAsync,
|
|
313
|
+
setStateAsync,
|
|
314
|
+
getCodeVerifierAsync,
|
|
315
|
+
setCodeVerifierAsync,
|
|
291
316
|
};
|
|
292
317
|
};
|