oidc-spa 8.1.5-rc.1 → 8.1.5
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 +5 -7
- package/core/createOidc.js +81 -33
- package/core/createOidc.js.map +1 -1
- package/core/diagnostic.d.ts +1 -0
- package/core/diagnostic.js +5 -4
- package/core/diagnostic.js.map +1 -1
- package/core/iframeMessageProtection.d.ts +0 -1
- package/core/iframeMessageProtection.js +2 -4
- package/core/iframeMessageProtection.js.map +1 -1
- package/core/isNewBrowserSession.d.ts +1 -1
- package/core/isNewBrowserSession.js +2 -2
- package/core/isNewBrowserSession.js.map +1 -1
- package/core/loginOrGoToAuthServer.d.ts +3 -2
- package/core/loginOrGoToAuthServer.js +45 -29
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/loginSilent.js +10 -2
- package/core/loginSilent.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/esm/core/createOidc.js +82 -34
- package/esm/core/createOidc.js.map +1 -1
- package/esm/core/diagnostic.d.ts +1 -0
- package/esm/core/diagnostic.js +1 -1
- package/esm/core/diagnostic.js.map +1 -1
- package/esm/core/iframeMessageProtection.d.ts +0 -1
- package/esm/core/iframeMessageProtection.js +2 -4
- package/esm/core/iframeMessageProtection.js.map +1 -1
- package/esm/core/isNewBrowserSession.d.ts +1 -1
- package/esm/core/isNewBrowserSession.js +2 -2
- package/esm/core/isNewBrowserSession.js.map +1 -1
- package/esm/core/loginOrGoToAuthServer.d.ts +3 -2
- package/esm/core/loginOrGoToAuthServer.js +44 -28
- package/esm/core/loginOrGoToAuthServer.js.map +1 -1
- package/esm/core/loginSilent.js +10 -2
- package/esm/core/loginSilent.js.map +1 -1
- package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/package.json +1 -1
- package/src/core/createOidc.ts +106 -36
- package/src/core/diagnostic.ts +2 -2
- package/src/core/iframeMessageProtection.ts +3 -11
- package/src/core/isNewBrowserSession.ts +3 -3
- package/src/core/loginOrGoToAuthServer.ts +59 -31
- package/src/core/loginSilent.ts +11 -2
- package/src/core/ongoingLoginOrRefreshProcesses.ts +8 -0
- package/vendor/backend/tsafe.js +1 -1
|
@@ -6,6 +6,7 @@ declare namespace Params {
|
|
|
6
6
|
redirectUrl: string;
|
|
7
7
|
extraQueryParams_local: Record<string, string | undefined> | undefined;
|
|
8
8
|
transformUrlBeforeRedirect_local: ((url: string) => string) | undefined;
|
|
9
|
+
onCantFetchWellKnownEndpointError: () => void;
|
|
9
10
|
};
|
|
10
11
|
export type Login = Common & {
|
|
11
12
|
action: "login";
|
|
@@ -18,7 +19,7 @@ declare namespace Params {
|
|
|
18
19
|
};
|
|
19
20
|
export {};
|
|
20
21
|
}
|
|
21
|
-
export declare function
|
|
22
|
+
export declare function getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError(): Promise<void>;
|
|
22
23
|
export declare function createLoginOrGoToAuthServer(params: {
|
|
23
24
|
configId: string;
|
|
24
25
|
oidcClientTsUserManager: OidcClientTsUserManager;
|
|
@@ -32,7 +33,7 @@ export declare function createLoginOrGoToAuthServer(params: {
|
|
|
32
33
|
}) => Record<string, string | undefined>) | undefined;
|
|
33
34
|
getExtraTokenParams: (() => Record<string, string | undefined>) | undefined;
|
|
34
35
|
homeUrl: string;
|
|
35
|
-
|
|
36
|
+
evtInitializationOutcomeUserNotLoggedIn: NonPostableEvt<void>;
|
|
36
37
|
log: typeof console.log | undefined;
|
|
37
38
|
}): {
|
|
38
39
|
loginOrGoToAuthServer: (params: Params) => Promise<never>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError = getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError;
|
|
4
4
|
exports.createLoginOrGoToAuthServer = createLoginOrGoToAuthServer;
|
|
5
5
|
const toFullyQualifiedUrl_1 = require("../tools/toFullyQualifiedUrl");
|
|
6
6
|
const assert_1 = require("../tools/tsafe/assert");
|
|
@@ -8,10 +8,11 @@ const noUndefined_1 = require("../tools/tsafe/noUndefined");
|
|
|
8
8
|
const StatefulEvt_1 = require("../tools/StatefulEvt");
|
|
9
9
|
const Deferred_1 = require("../tools/Deferred");
|
|
10
10
|
const urlSearchParams_1 = require("../tools/urlSearchParams");
|
|
11
|
+
const getIsOnline_1 = require("../tools/getIsOnline");
|
|
11
12
|
const globalContext = {
|
|
12
13
|
evtHasLoginBeenCalled: (0, StatefulEvt_1.createStatefulEvt)(() => false)
|
|
13
14
|
};
|
|
14
|
-
function
|
|
15
|
+
function getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError() {
|
|
15
16
|
const dOut = new Deferred_1.Deferred();
|
|
16
17
|
const { unsubscribe } = globalContext.evtHasLoginBeenCalled.subscribe(hasLoginBeenCalled => {
|
|
17
18
|
if (!hasLoginBeenCalled) {
|
|
@@ -22,12 +23,20 @@ function getPrSafelyRestoredFromBfCacheAfterLoginBackNavigation() {
|
|
|
22
23
|
return dOut.pr;
|
|
23
24
|
}
|
|
24
25
|
function createLoginOrGoToAuthServer(params) {
|
|
25
|
-
const { configId, oidcClientTsUserManager, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, homeUrl,
|
|
26
|
-
const LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN = `oidc-spa.login-redirect-initiated:${configId}`;
|
|
26
|
+
const { configId, oidcClientTsUserManager, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, homeUrl, evtInitializationOutcomeUserNotLoggedIn, log } = params;
|
|
27
27
|
let lastPublicUrl = undefined;
|
|
28
28
|
async function loginOrGoToAuthServer(params) {
|
|
29
|
-
const { redirectUrl: redirectUrl_params, extraQueryParams_local, transformUrlBeforeRedirect_local, ...rest } = params;
|
|
29
|
+
const { redirectUrl: redirectUrl_params, extraQueryParams_local, transformUrlBeforeRedirect_local, onCantFetchWellKnownEndpointError: onCantFetchWellKnownEndpointError_params, ...rest } = params;
|
|
30
|
+
let onCantFetchWellKnownEndpointError = onCantFetchWellKnownEndpointError_params;
|
|
30
31
|
log?.(`Calling loginOrGoToAuthServer ${JSON.stringify(params, null, 2)}`);
|
|
32
|
+
delay_until_online: {
|
|
33
|
+
const { isOnline, prOnline } = (0, getIsOnline_1.getIsOnline)();
|
|
34
|
+
if (isOnline) {
|
|
35
|
+
break delay_until_online;
|
|
36
|
+
}
|
|
37
|
+
log?.("The browser seem offline, waiting to get back a connection before proceeding to login");
|
|
38
|
+
await prOnline;
|
|
39
|
+
}
|
|
31
40
|
login_specific_handling: {
|
|
32
41
|
if (rest.action !== "login") {
|
|
33
42
|
break login_specific_handling;
|
|
@@ -52,15 +61,19 @@ function createLoginOrGoToAuthServer(params) {
|
|
|
52
61
|
}
|
|
53
62
|
bf_cache_handling: {
|
|
54
63
|
if (rest.doForceReloadOnBfCache) {
|
|
55
|
-
|
|
64
|
+
const callback = (event) => {
|
|
56
65
|
if (!event.persisted) {
|
|
57
66
|
return;
|
|
58
67
|
}
|
|
59
68
|
location.reload();
|
|
60
|
-
}
|
|
69
|
+
};
|
|
70
|
+
window.addEventListener("pageshow", callback);
|
|
71
|
+
onCantFetchWellKnownEndpointError = () => {
|
|
72
|
+
window.removeEventListener("pageshow", callback);
|
|
73
|
+
onCantFetchWellKnownEndpointError_params();
|
|
74
|
+
};
|
|
61
75
|
break bf_cache_handling;
|
|
62
76
|
}
|
|
63
|
-
localStorage.setItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN, "true");
|
|
64
77
|
const callback = (event) => {
|
|
65
78
|
if (!event.persisted) {
|
|
66
79
|
return;
|
|
@@ -78,18 +91,17 @@ function createLoginOrGoToAuthServer(params) {
|
|
|
78
91
|
}
|
|
79
92
|
}
|
|
80
93
|
else {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
location.reload();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
log?.("and the user doesn't seem to be authenticated, avoiding a reload");
|
|
88
|
-
globalContext.evtHasLoginBeenCalled.current = false;
|
|
89
|
-
}
|
|
94
|
+
// NOTE: We know the user is not logged in because login can only be called when not logged in.
|
|
95
|
+
log?.("The current page doesn't require auth, avoiding reloading the page");
|
|
96
|
+
globalContext.evtHasLoginBeenCalled.current = false;
|
|
90
97
|
}
|
|
91
98
|
};
|
|
92
99
|
window.addEventListener("pageshow", callback);
|
|
100
|
+
onCantFetchWellKnownEndpointError = () => {
|
|
101
|
+
window.removeEventListener("pageshow", callback);
|
|
102
|
+
globalContext.evtHasLoginBeenCalled.current = false;
|
|
103
|
+
onCantFetchWellKnownEndpointError_params();
|
|
104
|
+
};
|
|
93
105
|
}
|
|
94
106
|
}
|
|
95
107
|
const redirectUrl = (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
|
|
@@ -218,20 +230,24 @@ function createLoginOrGoToAuthServer(params) {
|
|
|
218
230
|
transformUrl: transformUrl_oidcClientTs,
|
|
219
231
|
extraTokenParams: getExtraTokenParams === undefined ? undefined : (0, noUndefined_1.noUndefined)(getExtraTokenParams())
|
|
220
232
|
})
|
|
221
|
-
.then(() => new Promise(() => { }))
|
|
233
|
+
.then(() => new Promise(() => { }), (error) => {
|
|
234
|
+
if (error.message === "Failed to fetch") {
|
|
235
|
+
// NOTE: See ./loginSilent for explanation.
|
|
236
|
+
onCantFetchWellKnownEndpointError();
|
|
237
|
+
return new Promise(() => { });
|
|
238
|
+
}
|
|
239
|
+
// NOTE: Here, except error on our understanding there can't be any other
|
|
240
|
+
// error.
|
|
241
|
+
(0, assert_1.assert)(false, "30442320");
|
|
242
|
+
});
|
|
222
243
|
}
|
|
223
|
-
const { unsubscribe } =
|
|
244
|
+
const { unsubscribe } = evtInitializationOutcomeUserNotLoggedIn.subscribe(() => {
|
|
224
245
|
unsubscribe();
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
history.pushState = function pushState(...args) {
|
|
231
|
-
lastPublicUrl = window.location.href;
|
|
232
|
-
return realPushState(...args);
|
|
233
|
-
};
|
|
234
|
-
}
|
|
246
|
+
const realPushState = history.pushState.bind(history);
|
|
247
|
+
history.pushState = function pushState(...args) {
|
|
248
|
+
lastPublicUrl = window.location.href;
|
|
249
|
+
return realPushState(...args);
|
|
250
|
+
};
|
|
235
251
|
});
|
|
236
252
|
return {
|
|
237
253
|
loginOrGoToAuthServer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginOrGoToAuthServer.js","sourceRoot":"","sources":["../src/core/loginOrGoToAuthServer.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"loginOrGoToAuthServer.js","sourceRoot":"","sources":["../src/core/loginOrGoToAuthServer.ts"],"names":[],"mappings":"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"}
|
package/core/loginSilent.js
CHANGED
|
@@ -10,8 +10,17 @@ const getDownlinkAndRtt_1 = require("../tools/getDownlinkAndRtt");
|
|
|
10
10
|
const isDev_1 = require("../tools/isDev");
|
|
11
11
|
const urlSearchParams_1 = require("../tools/urlSearchParams");
|
|
12
12
|
const iframeMessageProtection_1 = require("./iframeMessageProtection");
|
|
13
|
+
const getIsOnline_1 = require("../tools/getIsOnline");
|
|
13
14
|
async function loginSilent(params) {
|
|
14
15
|
const { oidcClientTsUserManager, stateUrlParamValue_instance, configId, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, autoLogin, log } = params;
|
|
16
|
+
delay_until_online: {
|
|
17
|
+
const { isOnline, prOnline } = (0, getIsOnline_1.getIsOnline)();
|
|
18
|
+
if (isOnline) {
|
|
19
|
+
break delay_until_online;
|
|
20
|
+
}
|
|
21
|
+
log?.("The browser seems offline, waiting to get back a connection before proceeding to login");
|
|
22
|
+
await prOnline;
|
|
23
|
+
}
|
|
15
24
|
const dResult = new Deferred_1.Deferred();
|
|
16
25
|
const timeoutDelayMs = (() => {
|
|
17
26
|
const isDev = (0, isDev_1.getIsDev)();
|
|
@@ -28,8 +37,7 @@ async function loginSilent(params) {
|
|
|
28
37
|
return Math.max(BASE_DELAY_MS, dynamicDelay);
|
|
29
38
|
})();
|
|
30
39
|
const { decodeEncryptedAuth, getIsEncryptedAuthResponse, clearSessionStoragePublicKey } = await (0, iframeMessageProtection_1.initIframeMessageProtection)({
|
|
31
|
-
stateUrlParamValue: stateUrlParamValue_instance
|
|
32
|
-
log
|
|
40
|
+
stateUrlParamValue: stateUrlParamValue_instance
|
|
33
41
|
});
|
|
34
42
|
let clearTimeouts;
|
|
35
43
|
{
|
package/core/loginSilent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginSilent.js","sourceRoot":"","sources":["../src/core/loginSilent.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"loginSilent.js","sourceRoot":"","sources":["../src/core/loginSilent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ongoingLoginOrRefreshProcesses.js","sourceRoot":"","sources":["../src/core/ongoingLoginOrRefreshProcesses.ts"],"names":[],"mappings":";;AASA,gEAsBC;AAED,
|
|
1
|
+
{"version":3,"file":"ongoingLoginOrRefreshProcesses.js","sourceRoot":"","sources":["../src/core/ongoingLoginOrRefreshProcesses.ts"],"names":[],"mappings":";;AASA,gEAsBC;AAED,0HAsBC;AAvDD,gDAA6C;AAC7C,kDAA+C;AAC/C,0CAAuC;AAEvC,MAAM,aAAa,GAAG;IAClB,UAAU,EAAE,IAAA,OAAE,EAAkB,EAAE,CAAC;IACnC,QAAQ,EAAE,IAAA,OAAE,EAAgB,OAAO,CAAC,OAAO,EAAE,CAAC;CACjD,CAAC;AAEK,KAAK,UAAU,0BAA0B;IAG5C,MAAM,aAAa,CAAC,QAAQ,CAAC;IAE7B,MAAM,KAAK,GAAG,IAAI,mBAAQ,EAAQ,CAAC;IAEnC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAErC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE1B,SAAS,6BAA6B;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAA,eAAM,EAAC,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE/B,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE5B,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,uDAAuD,CAAC,MAU7E;IACG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAEhD,aAAa,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QACjC,MAAM,gBAAgB,CAAC;QAEvB,MAAM,QAAQ,CAAC;IACnB,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC"}
|
package/esm/core/createOidc.js
CHANGED
|
@@ -19,15 +19,16 @@ import { getRootRelativeOriginalLocationHref, getRedirectAuthResponse } from "./
|
|
|
19
19
|
import { getPersistedAuthState, persistAuthState } from "./persistedAuthState";
|
|
20
20
|
import { createEvt } from "../tools/Evt";
|
|
21
21
|
import { getHaveSharedParentDomain } from "../tools/haveSharedParentDomain";
|
|
22
|
-
import { createLoginOrGoToAuthServer,
|
|
22
|
+
import { createLoginOrGoToAuthServer, getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError } from "./loginOrGoToAuthServer";
|
|
23
23
|
import { createEphemeralSessionStorage } from "../tools/EphemeralSessionStorage";
|
|
24
24
|
import { startLoginOrRefreshProcess, waitForAllOtherOngoingLoginOrRefreshProcessesToComplete } from "./ongoingLoginOrRefreshProcesses";
|
|
25
25
|
import { createGetIsNewBrowserSession } from "./isNewBrowserSession";
|
|
26
26
|
import { getIsOnline } from "../tools/getIsOnline";
|
|
27
27
|
import { isKeycloak } from "../keycloak/isKeycloak";
|
|
28
28
|
import { INFINITY_TIME } from "../tools/INFINITY_TIME";
|
|
29
|
+
import { getIsValidRemoteJson } from "../tools/getIsValidRemoteJson";
|
|
29
30
|
// NOTE: Replaced at build time
|
|
30
|
-
const VERSION = "8.1.5
|
|
31
|
+
const VERSION = "8.1.5";
|
|
31
32
|
const globalContext = {
|
|
32
33
|
prOidcByConfigId: new Map(),
|
|
33
34
|
hasLogoutBeenCalled: id(false),
|
|
@@ -199,7 +200,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
199
200
|
client_secret: __unsafe_clientSecret,
|
|
200
201
|
metadata: __metadata
|
|
201
202
|
});
|
|
202
|
-
const
|
|
203
|
+
const evtInitializationOutcomeUserNotLoggedIn = createEvt();
|
|
203
204
|
const { loginOrGoToAuthServer } = createLoginOrGoToAuthServer({
|
|
204
205
|
configId,
|
|
205
206
|
oidcClientTsUserManager,
|
|
@@ -207,20 +208,12 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
207
208
|
getExtraQueryParams,
|
|
208
209
|
getExtraTokenParams,
|
|
209
210
|
homeUrl: homeUrlAndRedirectUri,
|
|
210
|
-
|
|
211
|
+
evtInitializationOutcomeUserNotLoggedIn,
|
|
211
212
|
log
|
|
212
213
|
});
|
|
213
214
|
const { getIsNewBrowserSession } = createGetIsNewBrowserSession({
|
|
214
215
|
configId,
|
|
215
|
-
|
|
216
|
-
const evt = createEvt();
|
|
217
|
-
evtIsUserLoggedIn.subscribe(isUserLoggedIn => {
|
|
218
|
-
if (!isUserLoggedIn) {
|
|
219
|
-
evt.post();
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
return evt;
|
|
223
|
-
})()
|
|
216
|
+
evtInitializationOutcomeUserNotLoggedIn
|
|
224
217
|
});
|
|
225
218
|
const { completeLoginOrRefreshProcess } = await startLoginOrRefreshProcess();
|
|
226
219
|
const resultOfLoginProcess = await (async () => {
|
|
@@ -350,6 +343,8 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
350
343
|
assert(false);
|
|
351
344
|
}
|
|
352
345
|
}
|
|
346
|
+
// NOTE: We almost never persist tokens, we have to only to support edge case
|
|
347
|
+
// of multiple oidc instance in a single App with no iframe support.
|
|
353
348
|
restore_from_session_storage: {
|
|
354
349
|
if (isUserStoreInMemoryOnly) {
|
|
355
350
|
break restore_from_session_storage;
|
|
@@ -408,6 +403,11 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
408
403
|
break actual_silent_signin;
|
|
409
404
|
}
|
|
410
405
|
if (!canUseIframe) {
|
|
406
|
+
if (!(await getIsValidRemoteJson(`${issuerUri}${id("/.well-known/openid-configuration")}`))) {
|
|
407
|
+
return (await import("./diagnostic")).createWellKnownOidcConfigurationEndpointUnreachableInitializationError({
|
|
408
|
+
issuerUri
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
411
|
break actual_silent_signin;
|
|
412
412
|
}
|
|
413
413
|
log?.("Trying to restore the auth from the http only cookie (silent signin with iframe)");
|
|
@@ -470,17 +470,18 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
470
470
|
persistAuthState({ configId, state: undefined });
|
|
471
471
|
completeLoginOrRefreshProcess();
|
|
472
472
|
if (autoLogin && persistedAuthState !== "logged in") {
|
|
473
|
-
|
|
473
|
+
evtInitializationOutcomeUserNotLoggedIn.post();
|
|
474
474
|
}
|
|
475
475
|
await waitForAllOtherOngoingLoginOrRefreshProcessesToComplete({
|
|
476
|
-
prUnlock:
|
|
476
|
+
prUnlock: getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError()
|
|
477
477
|
});
|
|
478
478
|
if (persistedAuthState === "logged in") {
|
|
479
479
|
globalContext.evtRequestToPersistTokens.post({
|
|
480
480
|
configIdOfInstancePostingTheRequest: configId
|
|
481
481
|
});
|
|
482
482
|
}
|
|
483
|
-
|
|
483
|
+
const dCantFetchWellKnownEndpointOrNever = new Deferred();
|
|
484
|
+
loginOrGoToAuthServer({
|
|
484
485
|
action: "login",
|
|
485
486
|
doForceReloadOnBfCache: true,
|
|
486
487
|
redirectUrl: getRootRelativeOriginalLocationHref(),
|
|
@@ -497,9 +498,16 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
497
498
|
return "directly redirect if active session show login otherwise";
|
|
498
499
|
}
|
|
499
500
|
return "ensure no interaction";
|
|
500
|
-
})()
|
|
501
|
+
})(),
|
|
502
|
+
onCantFetchWellKnownEndpointError: () => {
|
|
503
|
+
dCantFetchWellKnownEndpointOrNever.resolve();
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
await dCantFetchWellKnownEndpointOrNever.pr;
|
|
507
|
+
return (await import("./diagnostic")).createFailedToFetchTokenEndpointInitializationError({
|
|
508
|
+
clientId,
|
|
509
|
+
issuerUri
|
|
501
510
|
});
|
|
502
|
-
assert(false, "321389");
|
|
503
511
|
}
|
|
504
512
|
if (authResponse_error !== undefined) {
|
|
505
513
|
log?.([
|
|
@@ -534,7 +542,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
534
542
|
if (!(resultOfLoginProcess instanceof Error) && resultOfLoginProcess !== undefined) {
|
|
535
543
|
break not_loggedIn_case;
|
|
536
544
|
}
|
|
537
|
-
|
|
545
|
+
evtInitializationOutcomeUserNotLoggedIn.post();
|
|
538
546
|
if (getPersistedAuthState({ configId }) !== "explicitly logged out") {
|
|
539
547
|
persistAuthState({ configId, state: undefined });
|
|
540
548
|
}
|
|
@@ -574,7 +582,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
574
582
|
isUserLoggedIn: false,
|
|
575
583
|
login: async ({ doesCurrentHrefRequiresAuth, extraQueryParams, redirectUrl, transformUrlBeforeRedirect }) => {
|
|
576
584
|
await waitForAllOtherOngoingLoginOrRefreshProcessesToComplete({
|
|
577
|
-
prUnlock:
|
|
585
|
+
prUnlock: getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError()
|
|
578
586
|
});
|
|
579
587
|
return loginOrGoToAuthServer({
|
|
580
588
|
action: "login",
|
|
@@ -585,7 +593,11 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
585
593
|
transformUrlBeforeRedirect_local: transformUrlBeforeRedirect,
|
|
586
594
|
interaction: getPersistedAuthState({ configId }) === "explicitly logged out"
|
|
587
595
|
? "ensure interaction"
|
|
588
|
-
: "directly redirect if active session show login otherwise"
|
|
596
|
+
: "directly redirect if active session show login otherwise",
|
|
597
|
+
onCantFetchWellKnownEndpointError: () => {
|
|
598
|
+
log?.("Login called but the auth server seems to be down..");
|
|
599
|
+
alert("Authentication unavailable please try again later.");
|
|
600
|
+
}
|
|
589
601
|
});
|
|
590
602
|
},
|
|
591
603
|
initializationError: undefined
|
|
@@ -609,7 +621,6 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
609
621
|
return oidc_notLoggedIn;
|
|
610
622
|
}
|
|
611
623
|
log?.("User is logged in");
|
|
612
|
-
evtIsUserLoggedIn.post(true);
|
|
613
624
|
let currentTokens = oidcClientTsUserToTokens({
|
|
614
625
|
oidcClientTsUser: resultOfLoginProcess.oidcClientTsUser,
|
|
615
626
|
decodedIdTokenSchema,
|
|
@@ -754,7 +765,14 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
754
765
|
extraQueryParams_local: undefined,
|
|
755
766
|
transformUrlBeforeRedirect_local: undefined,
|
|
756
767
|
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: false,
|
|
757
|
-
interaction: "directly redirect if active session show login otherwise"
|
|
768
|
+
interaction: "directly redirect if active session show login otherwise",
|
|
769
|
+
onCantFetchWellKnownEndpointError: () => {
|
|
770
|
+
log?.([
|
|
771
|
+
"The auth server seems to be down while we needed to refresh the token",
|
|
772
|
+
"with a full page redirect. Reloading the page"
|
|
773
|
+
].join(" "));
|
|
774
|
+
window.location.reload();
|
|
775
|
+
}
|
|
758
776
|
});
|
|
759
777
|
assert(false, "136134");
|
|
760
778
|
};
|
|
@@ -781,10 +799,13 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
781
799
|
log
|
|
782
800
|
});
|
|
783
801
|
if (result_loginSilent.outcome === "failure") {
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
802
|
+
log?.([
|
|
803
|
+
`Silent refresh of the token failed with ${result_loginSilent.cause}.`,
|
|
804
|
+
`This isn't recoverable, reloading the page.`
|
|
805
|
+
].join(" "));
|
|
806
|
+
window.location.reload();
|
|
807
|
+
await new Promise(() => { });
|
|
808
|
+
assert(false);
|
|
788
809
|
}
|
|
789
810
|
let oidcClientTsUser;
|
|
790
811
|
switch (result_loginSilent.outcome) {
|
|
@@ -917,7 +938,11 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
917
938
|
action: "go to auth server",
|
|
918
939
|
redirectUrl: redirectUrl ?? window.location.href,
|
|
919
940
|
extraQueryParams_local: extraQueryParams,
|
|
920
|
-
transformUrlBeforeRedirect_local: transformUrlBeforeRedirect
|
|
941
|
+
transformUrlBeforeRedirect_local: transformUrlBeforeRedirect,
|
|
942
|
+
onCantFetchWellKnownEndpointError: () => {
|
|
943
|
+
log?.("goToAuthServer called but the auth server seems to be down..");
|
|
944
|
+
alert("Authentication unavailable please try again later.");
|
|
945
|
+
}
|
|
921
946
|
}),
|
|
922
947
|
backFromAuthServer: resultOfLoginProcess.backFromAuthServer,
|
|
923
948
|
isNewBrowserSession: (() => {
|
|
@@ -976,17 +1001,40 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
976
1001
|
renewOnLocalTimeShift();
|
|
977
1002
|
});
|
|
978
1003
|
})();
|
|
979
|
-
(function
|
|
1004
|
+
(function scheduleTokenRefreshToKeepSessionAlive() {
|
|
980
1005
|
if (!currentTokens.hasRefreshToken && !canUseIframe) {
|
|
981
1006
|
log?.([
|
|
982
|
-
"
|
|
983
|
-
"
|
|
1007
|
+
"Session keep-alive disabled: no refresh token and no iframe support. ",
|
|
1008
|
+
"Result: once tokens expire, continuing requires full reload."
|
|
984
1009
|
].join(" "));
|
|
985
1010
|
return;
|
|
986
1011
|
}
|
|
987
1012
|
if (currentTokens.refreshTokenExpirationTime !== undefined &&
|
|
988
1013
|
currentTokens.refreshTokenExpirationTime >= INFINITY_TIME) {
|
|
989
|
-
|
|
1014
|
+
const warningLines = [];
|
|
1015
|
+
if (scopes.includes("offline_access")) {
|
|
1016
|
+
warningLines.push("offline_access scope was explicitly requested.");
|
|
1017
|
+
}
|
|
1018
|
+
else if (isKeycloak({ issuerUri })) {
|
|
1019
|
+
warningLines.push("Keycloak likely enabled offline_access by default.");
|
|
1020
|
+
}
|
|
1021
|
+
if (warningLines.length > 0) {
|
|
1022
|
+
warningLines.push(...[
|
|
1023
|
+
"Misconfiguration: offline_access is for native apps, not SPAs. ",
|
|
1024
|
+
"You lose SSO and users must log in after every reload."
|
|
1025
|
+
]);
|
|
1026
|
+
}
|
|
1027
|
+
const logMessage = [
|
|
1028
|
+
"Refresh token never expires → no need to ping server.",
|
|
1029
|
+
"The backend session will not expire.",
|
|
1030
|
+
...warningLines
|
|
1031
|
+
].join(" ");
|
|
1032
|
+
if (warningLines.length > 0) {
|
|
1033
|
+
console.warn(`oidc-spa: ${logMessage}`);
|
|
1034
|
+
}
|
|
1035
|
+
else {
|
|
1036
|
+
log?.(logMessage);
|
|
1037
|
+
}
|
|
990
1038
|
return;
|
|
991
1039
|
}
|
|
992
1040
|
const msBeforeExpiration = (currentTokens.refreshTokenExpirationTime ?? currentTokens.accessTokenExpirationTime) -
|
|
@@ -995,7 +1043,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
995
1043
|
const RENEW_MS_BEFORE_EXPIRES = 30000;
|
|
996
1044
|
if (msBeforeExpiration <= RENEW_MS_BEFORE_EXPIRES) {
|
|
997
1045
|
log?.([
|
|
998
|
-
"
|
|
1046
|
+
"Session keep-alive disabled. We just got fresh tokens",
|
|
999
1047
|
(() => {
|
|
1000
1048
|
switch (typeOfTheTokenWeGotTheTtlFrom) {
|
|
1001
1049
|
case "refresh":
|
|
@@ -1054,7 +1102,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1054
1102
|
const { unsubscribe: tokenChangeUnsubscribe } = oidc_loggedIn.subscribeToTokensChange(() => {
|
|
1055
1103
|
clearTimeout(timer);
|
|
1056
1104
|
tokenChangeUnsubscribe();
|
|
1057
|
-
|
|
1105
|
+
scheduleTokenRefreshToKeepSessionAlive();
|
|
1058
1106
|
});
|
|
1059
1107
|
})();
|
|
1060
1108
|
auto_logout: {
|