oidc-spa 7.3.1 → 8.0.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/core/AuthResponse.d.ts +5 -0
- package/core/AuthResponse.js +25 -0
- package/core/AuthResponse.js.map +1 -1
- package/core/StateData.d.ts +2 -6
- package/core/StateData.js +0 -13
- package/core/StateData.js.map +1 -1
- package/core/createOidc.d.ts +3 -3
- package/core/createOidc.js +70 -19
- package/core/createOidc.js.map +1 -1
- package/core/diagnostic.js +3 -3
- package/core/earlyInit.d.ts +16 -0
- package/core/earlyInit.js +157 -0
- package/core/earlyInit.js.map +1 -0
- package/core/index.d.ts +0 -1
- package/core/index.js +1 -3
- package/core/index.js.map +1 -1
- package/core/loginOrGoToAuthServer.js +19 -6
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/entrypoint.d.ts +1 -7
- package/entrypoint.js +3 -46
- package/entrypoint.js.map +1 -1
- package/esm/core/AuthResponse.d.ts +5 -0
- package/esm/core/AuthResponse.js +23 -0
- package/esm/core/AuthResponse.js.map +1 -1
- package/esm/core/StateData.d.ts +2 -6
- package/esm/core/StateData.js +0 -12
- package/esm/core/StateData.js.map +1 -1
- package/esm/core/createOidc.d.ts +3 -3
- package/esm/core/createOidc.js +72 -21
- package/esm/core/createOidc.js.map +1 -1
- package/esm/core/diagnostic.js +3 -3
- package/esm/core/earlyInit.d.ts +16 -0
- package/esm/core/earlyInit.js +152 -0
- package/esm/core/earlyInit.js.map +1 -0
- package/esm/core/index.d.ts +0 -1
- package/esm/core/index.js +0 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/loginOrGoToAuthServer.js +19 -6
- package/esm/core/loginOrGoToAuthServer.js.map +1 -1
- package/esm/entrypoint.d.ts +1 -7
- package/esm/entrypoint.js +1 -45
- package/esm/entrypoint.js.map +1 -1
- package/esm/mock/oidc.js +15 -4
- package/esm/mock/oidc.js.map +1 -1
- package/esm/mock/react.d.ts +1 -1
- package/esm/mock/react.js +1 -1
- package/esm/react/react.d.ts +1 -1
- package/esm/react/react.js +2 -10
- package/esm/react/react.js.map +1 -1
- package/mock/oidc.js +15 -4
- package/mock/oidc.js.map +1 -1
- package/mock/react.d.ts +1 -1
- package/mock/react.js +1 -1
- package/package.json +1 -1
- package/react/react.d.ts +1 -1
- package/react/react.js +1 -9
- package/react/react.js.map +1 -1
- package/src/core/AuthResponse.ts +36 -0
- package/src/core/StateData.ts +2 -22
- package/src/core/createOidc.ts +109 -25
- package/src/core/diagnostic.ts +3 -3
- package/src/core/earlyInit.ts +213 -0
- package/src/core/index.ts +0 -1
- package/src/core/loginOrGoToAuthServer.ts +24 -6
- package/src/entrypoint.ts +1 -69
- package/src/mock/oidc.ts +15 -4
- package/src/mock/react.tsx +1 -1
- package/src/react/react.tsx +2 -18
- package/core/handleOidcCallback.d.ts +0 -13
- package/core/handleOidcCallback.js +0 -228
- package/core/handleOidcCallback.js.map +0 -1
- package/core/initialLocationHref.d.ts +0 -1
- package/core/initialLocationHref.js +0 -8
- package/core/initialLocationHref.js.map +0 -1
- package/esm/core/handleOidcCallback.d.ts +0 -13
- package/esm/core/handleOidcCallback.js +0 -223
- package/esm/core/handleOidcCallback.js.map +0 -1
- package/esm/core/initialLocationHref.d.ts +0 -1
- package/esm/core/initialLocationHref.js +0 -5
- package/esm/core/initialLocationHref.js.map +0 -1
- package/src/core/handleOidcCallback.ts +0 -318
- package/src/core/initialLocationHref.ts +0 -5
package/src/react/react.tsx
CHANGED
|
@@ -8,13 +8,7 @@ import {
|
|
|
8
8
|
type FC,
|
|
9
9
|
type JSX
|
|
10
10
|
} from "react";
|
|
11
|
-
import {
|
|
12
|
-
type Oidc,
|
|
13
|
-
createOidc,
|
|
14
|
-
type ParamsOfCreateOidc,
|
|
15
|
-
OidcInitializationError,
|
|
16
|
-
handleOidcCallback
|
|
17
|
-
} from "../core";
|
|
11
|
+
import { type Oidc, createOidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
|
|
18
12
|
import { assert, type Equals, type Param0 } from "../vendor/frontend/tsafe";
|
|
19
13
|
import { id } from "../vendor/frontend/tsafe";
|
|
20
14
|
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
@@ -145,16 +139,6 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
145
139
|
|
|
146
140
|
// NOTE: It can be InitializationError only if autoLogin is true
|
|
147
141
|
const prOidcOrInitializationError = (async () => {
|
|
148
|
-
// We're doing this here just for people that wouldn't have
|
|
149
|
-
// configured the early init in entrypoint.
|
|
150
|
-
{
|
|
151
|
-
const { isHandled } = handleOidcCallback();
|
|
152
|
-
|
|
153
|
-
if (isHandled) {
|
|
154
|
-
return new Promise<never>(() => {});
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
142
|
const params = await (async () => {
|
|
159
143
|
if (typeof paramsOrGetParams === "function") {
|
|
160
144
|
const getParams = paramsOrGetParams;
|
|
@@ -467,7 +451,7 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
467
451
|
return oidcReact;
|
|
468
452
|
}
|
|
469
453
|
|
|
470
|
-
/** @see: https://docs.oidc-spa.dev/v/
|
|
454
|
+
/** @see: https://docs.oidc-spa.dev/v/v8/usage#react-api */
|
|
471
455
|
export function createReactOidc<
|
|
472
456
|
DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base,
|
|
473
457
|
AutoLogin extends boolean = false
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type StateData } from "./StateData";
|
|
2
|
-
import type { AuthResponse } from "./AuthResponse";
|
|
3
|
-
export declare function handleOidcCallback(): {
|
|
4
|
-
isHandled: boolean;
|
|
5
|
-
};
|
|
6
|
-
declare const moveRedirectAuthResponseFromSessionStorageToMemory: () => void;
|
|
7
|
-
export { moveRedirectAuthResponseFromSessionStorageToMemory };
|
|
8
|
-
export declare function retrieveRedirectAuthResponseAndStateData(params: {
|
|
9
|
-
configId: string;
|
|
10
|
-
}): {
|
|
11
|
-
authResponse: AuthResponse;
|
|
12
|
-
stateData: StateData.Redirect;
|
|
13
|
-
} | undefined;
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.moveRedirectAuthResponseFromSessionStorageToMemory = void 0;
|
|
4
|
-
exports.handleOidcCallback = handleOidcCallback;
|
|
5
|
-
exports.retrieveRedirectAuthResponseAndStateData = retrieveRedirectAuthResponseAndStateData;
|
|
6
|
-
const StateData_1 = require("./StateData");
|
|
7
|
-
const tsafe_1 = require("../vendor/frontend/tsafe");
|
|
8
|
-
const initialLocationHref_1 = require("./initialLocationHref");
|
|
9
|
-
const iframeMessageProtection_1 = require("./iframeMessageProtection");
|
|
10
|
-
const globalContext = {
|
|
11
|
-
previousCall: (0, tsafe_1.id)(undefined)
|
|
12
|
-
};
|
|
13
|
-
function handleOidcCallback() {
|
|
14
|
-
if (globalContext.previousCall !== undefined) {
|
|
15
|
-
return globalContext.previousCall;
|
|
16
|
-
}
|
|
17
|
-
return (globalContext.previousCall = handleOidcCallback_nonMemoized());
|
|
18
|
-
}
|
|
19
|
-
function handleOidcCallback_nonMemoized() {
|
|
20
|
-
const location_urlObj = new URL(initialLocationHref_1.initialLocationHref);
|
|
21
|
-
const stateUrlParamValue_wrap = (() => {
|
|
22
|
-
fragment: {
|
|
23
|
-
const stateUrlParamValue = new URLSearchParams(location_urlObj.hash.replace(/^#/, "")).get("state");
|
|
24
|
-
if (stateUrlParamValue === null) {
|
|
25
|
-
break fragment;
|
|
26
|
-
}
|
|
27
|
-
if (!(0, StateData_1.getIsStatQueryParamValue)({ maybeStateUrlParamValue: stateUrlParamValue })) {
|
|
28
|
-
break fragment;
|
|
29
|
-
}
|
|
30
|
-
return { stateUrlParamValue, isFragment: true };
|
|
31
|
-
}
|
|
32
|
-
query: {
|
|
33
|
-
const stateUrlParamValue = location_urlObj.searchParams.get("state");
|
|
34
|
-
if (stateUrlParamValue === null) {
|
|
35
|
-
break query;
|
|
36
|
-
}
|
|
37
|
-
if (!(0, StateData_1.getIsStatQueryParamValue)({ maybeStateUrlParamValue: stateUrlParamValue })) {
|
|
38
|
-
break query;
|
|
39
|
-
}
|
|
40
|
-
if (location_urlObj.searchParams.get("client_id") !== null &&
|
|
41
|
-
location_urlObj.searchParams.get("response_type") !== null &&
|
|
42
|
-
location_urlObj.searchParams.get("redirect_uri") !== null) {
|
|
43
|
-
// NOTE: We are probably in a Keycloakify theme and oidc-spa was loaded by mistake.
|
|
44
|
-
break query;
|
|
45
|
-
}
|
|
46
|
-
return { stateUrlParamValue, isFragment: false };
|
|
47
|
-
}
|
|
48
|
-
return undefined;
|
|
49
|
-
})();
|
|
50
|
-
if (stateUrlParamValue_wrap === undefined) {
|
|
51
|
-
const backForwardTracker = readBackForwardTracker();
|
|
52
|
-
if (backForwardTracker !== undefined) {
|
|
53
|
-
writeBackForwardTracker({
|
|
54
|
-
backForwardTracker: {
|
|
55
|
-
...backForwardTracker,
|
|
56
|
-
hasExitedCallback: true
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
return { isHandled: false };
|
|
61
|
-
}
|
|
62
|
-
const isHandled = true;
|
|
63
|
-
const { stateUrlParamValue, isFragment } = stateUrlParamValue_wrap;
|
|
64
|
-
console.log = () => { };
|
|
65
|
-
console.warn = () => { };
|
|
66
|
-
console.error = () => { };
|
|
67
|
-
console.debug = () => { };
|
|
68
|
-
const stateData = (0, StateData_1.getStateData)({ stateUrlParamValue });
|
|
69
|
-
if (stateData === undefined ||
|
|
70
|
-
(stateData.context === "redirect" && stateData.hasBeenProcessedByCallback)) {
|
|
71
|
-
const historyMethod = (() => {
|
|
72
|
-
const backForwardTracker = readBackForwardTracker();
|
|
73
|
-
if (backForwardTracker === undefined) {
|
|
74
|
-
return "back";
|
|
75
|
-
}
|
|
76
|
-
if (!backForwardTracker.hasExitedCallback) {
|
|
77
|
-
return backForwardTracker.previousHistoryMethod;
|
|
78
|
-
}
|
|
79
|
-
switch (backForwardTracker.previousHistoryMethod) {
|
|
80
|
-
case "back":
|
|
81
|
-
return "forward";
|
|
82
|
-
case "forward":
|
|
83
|
-
return "back";
|
|
84
|
-
}
|
|
85
|
-
})();
|
|
86
|
-
writeBackForwardTracker({
|
|
87
|
-
backForwardTracker: {
|
|
88
|
-
previousHistoryMethod: historyMethod,
|
|
89
|
-
hasExitedCallback: false
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
setTimeout(() => {
|
|
93
|
-
reloadOnBfCacheNavigation();
|
|
94
|
-
window.history[historyMethod]();
|
|
95
|
-
// NOTE: This is a "better than nothing" approach.
|
|
96
|
-
// Under some circumstances it's possible to get stuck on this url
|
|
97
|
-
// if there is no "next" page in the history for example, navigating
|
|
98
|
-
// forward is a NoOp. So in that case it's better to reload the same route
|
|
99
|
-
// with just the authResponse removed from the url to avoid re-entering here.
|
|
100
|
-
setTimeout(() => {
|
|
101
|
-
const { protocol, host, pathname, hash } = window.location;
|
|
102
|
-
window.location.href = `${protocol}//${host}${pathname}${hash}`;
|
|
103
|
-
}, 350);
|
|
104
|
-
}, 0);
|
|
105
|
-
return { isHandled };
|
|
106
|
-
}
|
|
107
|
-
const authResponse = { state: "" };
|
|
108
|
-
for (const [key, value] of isFragment
|
|
109
|
-
? new URLSearchParams(location_urlObj.hash.replace(/^#/, ""))
|
|
110
|
-
: location_urlObj.searchParams) {
|
|
111
|
-
authResponse[key] = value;
|
|
112
|
-
}
|
|
113
|
-
(0, tsafe_1.assert)(authResponse.state !== "", "063965");
|
|
114
|
-
switch (stateData.context) {
|
|
115
|
-
case "iframe":
|
|
116
|
-
(0, iframeMessageProtection_1.encryptAuthResponse)({
|
|
117
|
-
authResponse
|
|
118
|
-
}).then(({ encryptedMessage }) => parent.postMessage(encryptedMessage, location.origin));
|
|
119
|
-
break;
|
|
120
|
-
case "redirect":
|
|
121
|
-
(0, StateData_1.markStateDataAsProcessedByCallback)({ stateUrlParamValue });
|
|
122
|
-
clearBackForwardTracker();
|
|
123
|
-
writeRedirectAuthResponses({
|
|
124
|
-
authResponses: [...readRedirectAuthResponses(), authResponse]
|
|
125
|
-
});
|
|
126
|
-
reloadOnBfCacheNavigation();
|
|
127
|
-
setTimeout(() => {
|
|
128
|
-
const href = (() => {
|
|
129
|
-
if (stateData.action === "login" && authResponse.error === "consent_required") {
|
|
130
|
-
return stateData.redirectUrl_consentRequiredCase;
|
|
131
|
-
}
|
|
132
|
-
return stateData.redirectUrl;
|
|
133
|
-
})();
|
|
134
|
-
location.href = href;
|
|
135
|
-
}, 0);
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
return { isHandled };
|
|
139
|
-
}
|
|
140
|
-
const { readRedirectAuthResponses, writeRedirectAuthResponses, moveRedirectAuthResponseFromSessionStorageToMemory } = (() => {
|
|
141
|
-
const AUTH_RESPONSES_KEY = "oidc-spa:authResponses";
|
|
142
|
-
let authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
143
|
-
// NOTE: Here we note that we can re-write on session storage some auth response
|
|
144
|
-
// after earlyInit in retrieveRedirectAuthResponseAndStateData
|
|
145
|
-
// In situation where there are more than one client in the same app and we can't use iframe,
|
|
146
|
-
// we can have one client that has to redirect before the response has been dealt with.
|
|
147
|
-
// In most case it won't happen if the init sequence is deterministic but the client
|
|
148
|
-
// can be instantiated at any time really.
|
|
149
|
-
// So the move to memory of the response is fully effective only when theres one client.
|
|
150
|
-
function writeRedirectAuthResponses(params) {
|
|
151
|
-
const { authResponses } = params;
|
|
152
|
-
authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
153
|
-
if (authResponses.length === 0) {
|
|
154
|
-
sessionStorage.removeItem(AUTH_RESPONSES_KEY);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
sessionStorage.setItem(AUTH_RESPONSES_KEY, JSON.stringify(authResponses));
|
|
158
|
-
}
|
|
159
|
-
function readRedirectAuthResponses() {
|
|
160
|
-
if (authResponses_movedToMemoryFromSessionStorage !== undefined) {
|
|
161
|
-
return authResponses_movedToMemoryFromSessionStorage;
|
|
162
|
-
}
|
|
163
|
-
const raw = sessionStorage.getItem(AUTH_RESPONSES_KEY);
|
|
164
|
-
if (raw === null) {
|
|
165
|
-
return [];
|
|
166
|
-
}
|
|
167
|
-
return JSON.parse(raw);
|
|
168
|
-
}
|
|
169
|
-
function moveRedirectAuthResponseFromSessionStorageToMemory() {
|
|
170
|
-
const authResponses = readRedirectAuthResponses();
|
|
171
|
-
writeRedirectAuthResponses({ authResponses: [] });
|
|
172
|
-
authResponses_movedToMemoryFromSessionStorage = authResponses;
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
writeRedirectAuthResponses,
|
|
176
|
-
readRedirectAuthResponses,
|
|
177
|
-
moveRedirectAuthResponseFromSessionStorageToMemory
|
|
178
|
-
};
|
|
179
|
-
})();
|
|
180
|
-
exports.moveRedirectAuthResponseFromSessionStorageToMemory = moveRedirectAuthResponseFromSessionStorageToMemory;
|
|
181
|
-
function retrieveRedirectAuthResponseAndStateData(params) {
|
|
182
|
-
const { configId } = params;
|
|
183
|
-
const authResponses = readRedirectAuthResponses();
|
|
184
|
-
let authResponseAndStateData = undefined;
|
|
185
|
-
for (const authResponse of [...authResponses]) {
|
|
186
|
-
const stateData = (0, StateData_1.getStateData)({ stateUrlParamValue: authResponse.state });
|
|
187
|
-
if (stateData === undefined) {
|
|
188
|
-
// NOTE: We do not understand how this can happen but it can.
|
|
189
|
-
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
(0, tsafe_1.assert)(stateData.context === "redirect", "474728");
|
|
193
|
-
if (stateData.configId !== configId) {
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
197
|
-
authResponseAndStateData = { authResponse, stateData };
|
|
198
|
-
}
|
|
199
|
-
writeRedirectAuthResponses({ authResponses });
|
|
200
|
-
return authResponseAndStateData;
|
|
201
|
-
}
|
|
202
|
-
function reloadOnBfCacheNavigation() {
|
|
203
|
-
window.addEventListener("pageshow", event => {
|
|
204
|
-
if (!event.persisted) {
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
location.reload();
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
const { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker } = (() => {
|
|
211
|
-
const BACK_NAVIGATION_TRACKER_KEY = "oidc-spa:callback-back-forward-tracker";
|
|
212
|
-
function writeBackForwardTracker(params) {
|
|
213
|
-
const { backForwardTracker } = params;
|
|
214
|
-
sessionStorage.setItem(BACK_NAVIGATION_TRACKER_KEY, JSON.stringify(backForwardTracker));
|
|
215
|
-
}
|
|
216
|
-
function readBackForwardTracker() {
|
|
217
|
-
const raw = sessionStorage.getItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
218
|
-
if (raw === null) {
|
|
219
|
-
return undefined;
|
|
220
|
-
}
|
|
221
|
-
return JSON.parse(raw);
|
|
222
|
-
}
|
|
223
|
-
function clearBackForwardTracker() {
|
|
224
|
-
sessionStorage.removeItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
225
|
-
}
|
|
226
|
-
return { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker };
|
|
227
|
-
})();
|
|
228
|
-
//# sourceMappingURL=handleOidcCallback.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleOidcCallback.js","sourceRoot":"","sources":["../src/core/handleOidcCallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const initialLocationHref: string;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initialLocationHref = void 0;
|
|
4
|
-
const globalContext = {
|
|
5
|
-
initialLocationHref: window.location.href
|
|
6
|
-
};
|
|
7
|
-
exports.initialLocationHref = globalContext.initialLocationHref;
|
|
8
|
-
//# sourceMappingURL=initialLocationHref.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialLocationHref.js","sourceRoot":"","sources":["../src/core/initialLocationHref.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG;IAClB,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;CAC5C,CAAC;AAEa,2BAAmB,GAAK,aAAa,qBAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type StateData } from "./StateData";
|
|
2
|
-
import type { AuthResponse } from "./AuthResponse";
|
|
3
|
-
export declare function handleOidcCallback(): {
|
|
4
|
-
isHandled: boolean;
|
|
5
|
-
};
|
|
6
|
-
declare const moveRedirectAuthResponseFromSessionStorageToMemory: () => void;
|
|
7
|
-
export { moveRedirectAuthResponseFromSessionStorageToMemory };
|
|
8
|
-
export declare function retrieveRedirectAuthResponseAndStateData(params: {
|
|
9
|
-
configId: string;
|
|
10
|
-
}): {
|
|
11
|
-
authResponse: AuthResponse;
|
|
12
|
-
stateData: StateData.Redirect;
|
|
13
|
-
} | undefined;
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import { getStateData, markStateDataAsProcessedByCallback, getIsStatQueryParamValue } from "./StateData";
|
|
2
|
-
import { assert, id } from "../vendor/frontend/tsafe";
|
|
3
|
-
import { initialLocationHref } from "./initialLocationHref";
|
|
4
|
-
import { encryptAuthResponse } from "./iframeMessageProtection";
|
|
5
|
-
const globalContext = {
|
|
6
|
-
previousCall: id(undefined)
|
|
7
|
-
};
|
|
8
|
-
export function handleOidcCallback() {
|
|
9
|
-
if (globalContext.previousCall !== undefined) {
|
|
10
|
-
return globalContext.previousCall;
|
|
11
|
-
}
|
|
12
|
-
return (globalContext.previousCall = handleOidcCallback_nonMemoized());
|
|
13
|
-
}
|
|
14
|
-
function handleOidcCallback_nonMemoized() {
|
|
15
|
-
const location_urlObj = new URL(initialLocationHref);
|
|
16
|
-
const stateUrlParamValue_wrap = (() => {
|
|
17
|
-
fragment: {
|
|
18
|
-
const stateUrlParamValue = new URLSearchParams(location_urlObj.hash.replace(/^#/, "")).get("state");
|
|
19
|
-
if (stateUrlParamValue === null) {
|
|
20
|
-
break fragment;
|
|
21
|
-
}
|
|
22
|
-
if (!getIsStatQueryParamValue({ maybeStateUrlParamValue: stateUrlParamValue })) {
|
|
23
|
-
break fragment;
|
|
24
|
-
}
|
|
25
|
-
return { stateUrlParamValue, isFragment: true };
|
|
26
|
-
}
|
|
27
|
-
query: {
|
|
28
|
-
const stateUrlParamValue = location_urlObj.searchParams.get("state");
|
|
29
|
-
if (stateUrlParamValue === null) {
|
|
30
|
-
break query;
|
|
31
|
-
}
|
|
32
|
-
if (!getIsStatQueryParamValue({ maybeStateUrlParamValue: stateUrlParamValue })) {
|
|
33
|
-
break query;
|
|
34
|
-
}
|
|
35
|
-
if (location_urlObj.searchParams.get("client_id") !== null &&
|
|
36
|
-
location_urlObj.searchParams.get("response_type") !== null &&
|
|
37
|
-
location_urlObj.searchParams.get("redirect_uri") !== null) {
|
|
38
|
-
// NOTE: We are probably in a Keycloakify theme and oidc-spa was loaded by mistake.
|
|
39
|
-
break query;
|
|
40
|
-
}
|
|
41
|
-
return { stateUrlParamValue, isFragment: false };
|
|
42
|
-
}
|
|
43
|
-
return undefined;
|
|
44
|
-
})();
|
|
45
|
-
if (stateUrlParamValue_wrap === undefined) {
|
|
46
|
-
const backForwardTracker = readBackForwardTracker();
|
|
47
|
-
if (backForwardTracker !== undefined) {
|
|
48
|
-
writeBackForwardTracker({
|
|
49
|
-
backForwardTracker: {
|
|
50
|
-
...backForwardTracker,
|
|
51
|
-
hasExitedCallback: true
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
return { isHandled: false };
|
|
56
|
-
}
|
|
57
|
-
const isHandled = true;
|
|
58
|
-
const { stateUrlParamValue, isFragment } = stateUrlParamValue_wrap;
|
|
59
|
-
console.log = () => { };
|
|
60
|
-
console.warn = () => { };
|
|
61
|
-
console.error = () => { };
|
|
62
|
-
console.debug = () => { };
|
|
63
|
-
const stateData = getStateData({ stateUrlParamValue });
|
|
64
|
-
if (stateData === undefined ||
|
|
65
|
-
(stateData.context === "redirect" && stateData.hasBeenProcessedByCallback)) {
|
|
66
|
-
const historyMethod = (() => {
|
|
67
|
-
const backForwardTracker = readBackForwardTracker();
|
|
68
|
-
if (backForwardTracker === undefined) {
|
|
69
|
-
return "back";
|
|
70
|
-
}
|
|
71
|
-
if (!backForwardTracker.hasExitedCallback) {
|
|
72
|
-
return backForwardTracker.previousHistoryMethod;
|
|
73
|
-
}
|
|
74
|
-
switch (backForwardTracker.previousHistoryMethod) {
|
|
75
|
-
case "back":
|
|
76
|
-
return "forward";
|
|
77
|
-
case "forward":
|
|
78
|
-
return "back";
|
|
79
|
-
}
|
|
80
|
-
})();
|
|
81
|
-
writeBackForwardTracker({
|
|
82
|
-
backForwardTracker: {
|
|
83
|
-
previousHistoryMethod: historyMethod,
|
|
84
|
-
hasExitedCallback: false
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
setTimeout(() => {
|
|
88
|
-
reloadOnBfCacheNavigation();
|
|
89
|
-
window.history[historyMethod]();
|
|
90
|
-
// NOTE: This is a "better than nothing" approach.
|
|
91
|
-
// Under some circumstances it's possible to get stuck on this url
|
|
92
|
-
// if there is no "next" page in the history for example, navigating
|
|
93
|
-
// forward is a NoOp. So in that case it's better to reload the same route
|
|
94
|
-
// with just the authResponse removed from the url to avoid re-entering here.
|
|
95
|
-
setTimeout(() => {
|
|
96
|
-
const { protocol, host, pathname, hash } = window.location;
|
|
97
|
-
window.location.href = `${protocol}//${host}${pathname}${hash}`;
|
|
98
|
-
}, 350);
|
|
99
|
-
}, 0);
|
|
100
|
-
return { isHandled };
|
|
101
|
-
}
|
|
102
|
-
const authResponse = { state: "" };
|
|
103
|
-
for (const [key, value] of isFragment
|
|
104
|
-
? new URLSearchParams(location_urlObj.hash.replace(/^#/, ""))
|
|
105
|
-
: location_urlObj.searchParams) {
|
|
106
|
-
authResponse[key] = value;
|
|
107
|
-
}
|
|
108
|
-
assert(authResponse.state !== "", "063965");
|
|
109
|
-
switch (stateData.context) {
|
|
110
|
-
case "iframe":
|
|
111
|
-
encryptAuthResponse({
|
|
112
|
-
authResponse
|
|
113
|
-
}).then(({ encryptedMessage }) => parent.postMessage(encryptedMessage, location.origin));
|
|
114
|
-
break;
|
|
115
|
-
case "redirect":
|
|
116
|
-
markStateDataAsProcessedByCallback({ stateUrlParamValue });
|
|
117
|
-
clearBackForwardTracker();
|
|
118
|
-
writeRedirectAuthResponses({
|
|
119
|
-
authResponses: [...readRedirectAuthResponses(), authResponse]
|
|
120
|
-
});
|
|
121
|
-
reloadOnBfCacheNavigation();
|
|
122
|
-
setTimeout(() => {
|
|
123
|
-
const href = (() => {
|
|
124
|
-
if (stateData.action === "login" && authResponse.error === "consent_required") {
|
|
125
|
-
return stateData.redirectUrl_consentRequiredCase;
|
|
126
|
-
}
|
|
127
|
-
return stateData.redirectUrl;
|
|
128
|
-
})();
|
|
129
|
-
location.href = href;
|
|
130
|
-
}, 0);
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
return { isHandled };
|
|
134
|
-
}
|
|
135
|
-
const { readRedirectAuthResponses, writeRedirectAuthResponses, moveRedirectAuthResponseFromSessionStorageToMemory } = (() => {
|
|
136
|
-
const AUTH_RESPONSES_KEY = "oidc-spa:authResponses";
|
|
137
|
-
let authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
138
|
-
// NOTE: Here we note that we can re-write on session storage some auth response
|
|
139
|
-
// after earlyInit in retrieveRedirectAuthResponseAndStateData
|
|
140
|
-
// In situation where there are more than one client in the same app and we can't use iframe,
|
|
141
|
-
// we can have one client that has to redirect before the response has been dealt with.
|
|
142
|
-
// In most case it won't happen if the init sequence is deterministic but the client
|
|
143
|
-
// can be instantiated at any time really.
|
|
144
|
-
// So the move to memory of the response is fully effective only when theres one client.
|
|
145
|
-
function writeRedirectAuthResponses(params) {
|
|
146
|
-
const { authResponses } = params;
|
|
147
|
-
authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
148
|
-
if (authResponses.length === 0) {
|
|
149
|
-
sessionStorage.removeItem(AUTH_RESPONSES_KEY);
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
sessionStorage.setItem(AUTH_RESPONSES_KEY, JSON.stringify(authResponses));
|
|
153
|
-
}
|
|
154
|
-
function readRedirectAuthResponses() {
|
|
155
|
-
if (authResponses_movedToMemoryFromSessionStorage !== undefined) {
|
|
156
|
-
return authResponses_movedToMemoryFromSessionStorage;
|
|
157
|
-
}
|
|
158
|
-
const raw = sessionStorage.getItem(AUTH_RESPONSES_KEY);
|
|
159
|
-
if (raw === null) {
|
|
160
|
-
return [];
|
|
161
|
-
}
|
|
162
|
-
return JSON.parse(raw);
|
|
163
|
-
}
|
|
164
|
-
function moveRedirectAuthResponseFromSessionStorageToMemory() {
|
|
165
|
-
const authResponses = readRedirectAuthResponses();
|
|
166
|
-
writeRedirectAuthResponses({ authResponses: [] });
|
|
167
|
-
authResponses_movedToMemoryFromSessionStorage = authResponses;
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
writeRedirectAuthResponses,
|
|
171
|
-
readRedirectAuthResponses,
|
|
172
|
-
moveRedirectAuthResponseFromSessionStorageToMemory
|
|
173
|
-
};
|
|
174
|
-
})();
|
|
175
|
-
export { moveRedirectAuthResponseFromSessionStorageToMemory };
|
|
176
|
-
export function retrieveRedirectAuthResponseAndStateData(params) {
|
|
177
|
-
const { configId } = params;
|
|
178
|
-
const authResponses = readRedirectAuthResponses();
|
|
179
|
-
let authResponseAndStateData = undefined;
|
|
180
|
-
for (const authResponse of [...authResponses]) {
|
|
181
|
-
const stateData = getStateData({ stateUrlParamValue: authResponse.state });
|
|
182
|
-
if (stateData === undefined) {
|
|
183
|
-
// NOTE: We do not understand how this can happen but it can.
|
|
184
|
-
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
assert(stateData.context === "redirect", "474728");
|
|
188
|
-
if (stateData.configId !== configId) {
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
192
|
-
authResponseAndStateData = { authResponse, stateData };
|
|
193
|
-
}
|
|
194
|
-
writeRedirectAuthResponses({ authResponses });
|
|
195
|
-
return authResponseAndStateData;
|
|
196
|
-
}
|
|
197
|
-
function reloadOnBfCacheNavigation() {
|
|
198
|
-
window.addEventListener("pageshow", event => {
|
|
199
|
-
if (!event.persisted) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
location.reload();
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
const { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker } = (() => {
|
|
206
|
-
const BACK_NAVIGATION_TRACKER_KEY = "oidc-spa:callback-back-forward-tracker";
|
|
207
|
-
function writeBackForwardTracker(params) {
|
|
208
|
-
const { backForwardTracker } = params;
|
|
209
|
-
sessionStorage.setItem(BACK_NAVIGATION_TRACKER_KEY, JSON.stringify(backForwardTracker));
|
|
210
|
-
}
|
|
211
|
-
function readBackForwardTracker() {
|
|
212
|
-
const raw = sessionStorage.getItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
213
|
-
if (raw === null) {
|
|
214
|
-
return undefined;
|
|
215
|
-
}
|
|
216
|
-
return JSON.parse(raw);
|
|
217
|
-
}
|
|
218
|
-
function clearBackForwardTracker() {
|
|
219
|
-
sessionStorage.removeItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
220
|
-
}
|
|
221
|
-
return { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker };
|
|
222
|
-
})();
|
|
223
|
-
//# sourceMappingURL=handleOidcCallback.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleOidcCallback.js","sourceRoot":"","sources":["../../src/core/handleOidcCallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const initialLocationHref: string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialLocationHref.js","sourceRoot":"","sources":["../../src/core/initialLocationHref.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;IAClB,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC"}
|