oidc-spa 8.1.4 → 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 +85 -35
- 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/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.d.ts +1 -0
- package/core/loginSilent.js +10 -1
- package/core/loginSilent.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/esm/core/createOidc.js +86 -36
- 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/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.d.ts +1 -0
- package/esm/core/loginSilent.js +10 -1
- 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 +110 -38
- package/src/core/diagnostic.ts +2 -2
- package/src/core/isNewBrowserSession.ts +3 -3
- package/src/core/loginOrGoToAuthServer.ts +59 -31
- package/src/core/loginSilent.ts +13 -1
- package/src/core/ongoingLoginOrRefreshProcesses.ts +8 -0
- package/vendor/backend/tsafe.js +1 -1
|
@@ -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.d.ts
CHANGED
|
@@ -24,5 +24,6 @@ export declare function loginSilent(params: {
|
|
|
24
24
|
}) => Record<string, string | undefined>) | undefined;
|
|
25
25
|
getExtraTokenParams: (() => Record<string, string | undefined>) | undefined;
|
|
26
26
|
autoLogin: boolean;
|
|
27
|
+
log: typeof console.log | undefined;
|
|
27
28
|
}): Promise<ResultOfLoginSilent>;
|
|
28
29
|
export {};
|
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
|
-
const { oidcClientTsUserManager, stateUrlParamValue_instance, configId, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, autoLogin } = params;
|
|
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)();
|
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.
|
|
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)");
|
|
@@ -418,7 +418,8 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
418
418
|
transformUrlBeforeRedirect,
|
|
419
419
|
getExtraQueryParams,
|
|
420
420
|
getExtraTokenParams,
|
|
421
|
-
autoLogin
|
|
421
|
+
autoLogin,
|
|
422
|
+
log
|
|
422
423
|
});
|
|
423
424
|
assert(result_loginSilent.outcome !== "token refreshed using refresh token", "876995");
|
|
424
425
|
if (result_loginSilent.outcome === "failure") {
|
|
@@ -469,17 +470,18 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
469
470
|
persistAuthState({ configId, state: undefined });
|
|
470
471
|
completeLoginOrRefreshProcess();
|
|
471
472
|
if (autoLogin && persistedAuthState !== "logged in") {
|
|
472
|
-
|
|
473
|
+
evtInitializationOutcomeUserNotLoggedIn.post();
|
|
473
474
|
}
|
|
474
475
|
await waitForAllOtherOngoingLoginOrRefreshProcessesToComplete({
|
|
475
|
-
prUnlock:
|
|
476
|
+
prUnlock: getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError()
|
|
476
477
|
});
|
|
477
478
|
if (persistedAuthState === "logged in") {
|
|
478
479
|
globalContext.evtRequestToPersistTokens.post({
|
|
479
480
|
configIdOfInstancePostingTheRequest: configId
|
|
480
481
|
});
|
|
481
482
|
}
|
|
482
|
-
|
|
483
|
+
const dCantFetchWellKnownEndpointOrNever = new Deferred();
|
|
484
|
+
loginOrGoToAuthServer({
|
|
483
485
|
action: "login",
|
|
484
486
|
doForceReloadOnBfCache: true,
|
|
485
487
|
redirectUrl: getRootRelativeOriginalLocationHref(),
|
|
@@ -496,9 +498,16 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
496
498
|
return "directly redirect if active session show login otherwise";
|
|
497
499
|
}
|
|
498
500
|
return "ensure no interaction";
|
|
499
|
-
})()
|
|
501
|
+
})(),
|
|
502
|
+
onCantFetchWellKnownEndpointError: () => {
|
|
503
|
+
dCantFetchWellKnownEndpointOrNever.resolve();
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
await dCantFetchWellKnownEndpointOrNever.pr;
|
|
507
|
+
return (await import("./diagnostic")).createFailedToFetchTokenEndpointInitializationError({
|
|
508
|
+
clientId,
|
|
509
|
+
issuerUri
|
|
500
510
|
});
|
|
501
|
-
assert(false, "321389");
|
|
502
511
|
}
|
|
503
512
|
if (authResponse_error !== undefined) {
|
|
504
513
|
log?.([
|
|
@@ -533,7 +542,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
533
542
|
if (!(resultOfLoginProcess instanceof Error) && resultOfLoginProcess !== undefined) {
|
|
534
543
|
break not_loggedIn_case;
|
|
535
544
|
}
|
|
536
|
-
|
|
545
|
+
evtInitializationOutcomeUserNotLoggedIn.post();
|
|
537
546
|
if (getPersistedAuthState({ configId }) !== "explicitly logged out") {
|
|
538
547
|
persistAuthState({ configId, state: undefined });
|
|
539
548
|
}
|
|
@@ -573,7 +582,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
573
582
|
isUserLoggedIn: false,
|
|
574
583
|
login: async ({ doesCurrentHrefRequiresAuth, extraQueryParams, redirectUrl, transformUrlBeforeRedirect }) => {
|
|
575
584
|
await waitForAllOtherOngoingLoginOrRefreshProcessesToComplete({
|
|
576
|
-
prUnlock:
|
|
585
|
+
prUnlock: getPrSafelyRestoredFromBfCacheAfterLoginBackNavigationOrInitializationError()
|
|
577
586
|
});
|
|
578
587
|
return loginOrGoToAuthServer({
|
|
579
588
|
action: "login",
|
|
@@ -584,7 +593,11 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
584
593
|
transformUrlBeforeRedirect_local: transformUrlBeforeRedirect,
|
|
585
594
|
interaction: getPersistedAuthState({ configId }) === "explicitly logged out"
|
|
586
595
|
? "ensure interaction"
|
|
587
|
-
: "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
|
+
}
|
|
588
601
|
});
|
|
589
602
|
},
|
|
590
603
|
initializationError: undefined
|
|
@@ -608,7 +621,6 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
608
621
|
return oidc_notLoggedIn;
|
|
609
622
|
}
|
|
610
623
|
log?.("User is logged in");
|
|
611
|
-
evtIsUserLoggedIn.post(true);
|
|
612
624
|
let currentTokens = oidcClientTsUserToTokens({
|
|
613
625
|
oidcClientTsUser: resultOfLoginProcess.oidcClientTsUser,
|
|
614
626
|
decodedIdTokenSchema,
|
|
@@ -753,7 +765,14 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
753
765
|
extraQueryParams_local: undefined,
|
|
754
766
|
transformUrlBeforeRedirect_local: undefined,
|
|
755
767
|
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: false,
|
|
756
|
-
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
|
+
}
|
|
757
776
|
});
|
|
758
777
|
assert(false, "136134");
|
|
759
778
|
};
|
|
@@ -776,13 +795,17 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
776
795
|
transformUrlBeforeRedirect,
|
|
777
796
|
getExtraQueryParams,
|
|
778
797
|
getExtraTokenParams: () => extraTokenParams,
|
|
779
|
-
autoLogin
|
|
798
|
+
autoLogin,
|
|
799
|
+
log
|
|
780
800
|
});
|
|
781
801
|
if (result_loginSilent.outcome === "failure") {
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
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);
|
|
786
809
|
}
|
|
787
810
|
let oidcClientTsUser;
|
|
788
811
|
switch (result_loginSilent.outcome) {
|
|
@@ -915,7 +938,11 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
915
938
|
action: "go to auth server",
|
|
916
939
|
redirectUrl: redirectUrl ?? window.location.href,
|
|
917
940
|
extraQueryParams_local: extraQueryParams,
|
|
918
|
-
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
|
+
}
|
|
919
946
|
}),
|
|
920
947
|
backFromAuthServer: resultOfLoginProcess.backFromAuthServer,
|
|
921
948
|
isNewBrowserSession: (() => {
|
|
@@ -974,17 +1001,40 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
974
1001
|
renewOnLocalTimeShift();
|
|
975
1002
|
});
|
|
976
1003
|
})();
|
|
977
|
-
(function
|
|
1004
|
+
(function scheduleTokenRefreshToKeepSessionAlive() {
|
|
978
1005
|
if (!currentTokens.hasRefreshToken && !canUseIframe) {
|
|
979
1006
|
log?.([
|
|
980
|
-
"
|
|
981
|
-
"
|
|
1007
|
+
"Session keep-alive disabled: no refresh token and no iframe support. ",
|
|
1008
|
+
"Result: once tokens expire, continuing requires full reload."
|
|
982
1009
|
].join(" "));
|
|
983
1010
|
return;
|
|
984
1011
|
}
|
|
985
1012
|
if (currentTokens.refreshTokenExpirationTime !== undefined &&
|
|
986
1013
|
currentTokens.refreshTokenExpirationTime >= INFINITY_TIME) {
|
|
987
|
-
|
|
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
|
+
}
|
|
988
1038
|
return;
|
|
989
1039
|
}
|
|
990
1040
|
const msBeforeExpiration = (currentTokens.refreshTokenExpirationTime ?? currentTokens.accessTokenExpirationTime) -
|
|
@@ -993,7 +1043,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
993
1043
|
const RENEW_MS_BEFORE_EXPIRES = 30000;
|
|
994
1044
|
if (msBeforeExpiration <= RENEW_MS_BEFORE_EXPIRES) {
|
|
995
1045
|
log?.([
|
|
996
|
-
"
|
|
1046
|
+
"Session keep-alive disabled. We just got fresh tokens",
|
|
997
1047
|
(() => {
|
|
998
1048
|
switch (typeOfTheTokenWeGotTheTtlFrom) {
|
|
999
1049
|
case "refresh":
|
|
@@ -1052,7 +1102,7 @@ export async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1052
1102
|
const { unsubscribe: tokenChangeUnsubscribe } = oidc_loggedIn.subscribeToTokensChange(() => {
|
|
1053
1103
|
clearTimeout(timer);
|
|
1054
1104
|
tokenChangeUnsubscribe();
|
|
1055
|
-
|
|
1105
|
+
scheduleTokenRefreshToKeepSessionAlive();
|
|
1056
1106
|
});
|
|
1057
1107
|
})();
|
|
1058
1108
|
auto_logout: {
|