@thunderid/browser 1.1.0 → 1.2.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.
@@ -2,17 +2,11 @@ export declare const ERROR = "error";
2
2
  export declare const ERROR_DESCRIPTION = "error_description";
3
3
  export declare const CUSTOM_GRANT_CONFIG = "custom_grant_config";
4
4
  export declare const STATE_QUERY = "state";
5
- export declare const OP_IFRAME = "opIFrame";
6
- export declare const RP_IFRAME = "rpIFrame";
7
- export declare const PROMPT_NONE_IFRAME = "promptNoneIFrame";
8
- export declare const STATE = "Y2hlY2tTZXNzaW9u";
9
5
  export declare const SILENT_SIGN_IN_STATE = "sign-in-silently";
10
- export declare const INITIALIZED_SILENT_SIGN_IN = "initialized-silent-sign-in";
11
- export declare const PROMPT_NONE_REQUEST_SENT = "promptNoneRequestSent";
6
+ export declare const SILENT_SIGN_IN_TIMEOUT = 10000;
12
7
  export declare const ACCESS_TOKEN_INVALID = "Access token is invalid";
13
8
  export declare const REFRESH_ACCESS_TOKEN_ERR0R = "refresh-access-token-error";
14
9
  export declare const TOKEN_REQUEST_CONFIG_KEY = "token_request_config";
15
- export declare const CHECK_SESSION_SIGNED_IN = "check_session_signed_in";
16
- export declare const CHECK_SESSION_SIGNED_OUT = "check_session_signed_out";
17
- export declare const SET_SESSION_STATE_FROM_IFRAME = "set_session_state_from_iframe";
10
+ export declare const SILENT_SIGN_IN_SIGNED_IN = "silent_sign_in_signed_in";
11
+ export declare const SILENT_SIGN_IN_SIGNED_OUT = "silent_sign_in_signed_out";
18
12
  //# sourceMappingURL=SPAConstants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SPAConstants.d.ts","sourceRoot":"","sources":["../../src/constants/SPAConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,KAAK,qBAAqB,CAAC;AACxC,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC"}
1
+ {"version":3,"file":"SPAConstants.d.ts","sourceRoot":"","sources":["../../src/constants/SPAConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -18,8 +18,6 @@ export { default as SPACryptoUtils } from './utils/SPACryptoUtils';
18
18
  export { default as SPAUtils } from './utils/SPAUtils';
19
19
  export { default as SPAHelper } from './utils/SPAHelper';
20
20
  export { default as AuthenticationHelper } from './utils/AuthenticationHelper';
21
- export { default as createSessionManagementHelper } from './utils/SessionManagementHelper';
22
- export type { SessionManagementHelperInterface } from './utils/SessionManagementHelper';
23
21
  export { default as hasAuthParamsInUrl } from './utils/hasAuthParamsInUrl';
24
22
  export { default as hasCalledForThisInstanceInUrl } from './utils/hasCalledForThisInstanceInUrl';
25
23
  export { default as navigate } from './utils/navigate';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -38,19 +38,13 @@ const ERROR = "error";
38
38
  const ERROR_DESCRIPTION = "error_description";
39
39
  const CUSTOM_GRANT_CONFIG = "custom_grant_config";
40
40
  const STATE_QUERY = "state";
41
- const OP_IFRAME = "opIFrame";
42
- const RP_IFRAME = "rpIFrame";
43
- const PROMPT_NONE_IFRAME = "promptNoneIFrame";
44
- const STATE = "Y2hlY2tTZXNzaW9u";
45
41
  const SILENT_SIGN_IN_STATE = "sign-in-silently";
46
- const INITIALIZED_SILENT_SIGN_IN = "initialized-silent-sign-in";
47
- const PROMPT_NONE_REQUEST_SENT = "promptNoneRequestSent";
42
+ const SILENT_SIGN_IN_TIMEOUT = 1e4;
48
43
  const ACCESS_TOKEN_INVALID = "Access token is invalid";
49
44
  const REFRESH_ACCESS_TOKEN_ERR0R = "refresh-access-token-error";
50
45
  const TOKEN_REQUEST_CONFIG_KEY = "token_request_config";
51
- const CHECK_SESSION_SIGNED_IN = "check_session_signed_in";
52
- const CHECK_SESSION_SIGNED_OUT = "check_session_signed_out";
53
- const SET_SESSION_STATE_FROM_IFRAME = "set_session_state_from_iframe";
46
+ const SILENT_SIGN_IN_SIGNED_IN = "silent_sign_in_signed_in";
47
+ const SILENT_SIGN_IN_SIGNED_OUT = "silent_sign_in_signed_out";
54
48
 
55
49
  //#endregion
56
50
  //#region src/FetchHttpClient.ts
@@ -288,13 +282,6 @@ var SPAUtils = class SPAUtils {
288
282
  return false;
289
283
  }
290
284
  /**
291
- * Returns `true` if a silent sign-in was previously initialized in this session.
292
- */
293
- static wasSilentSignInCalled() {
294
- const raw = sessionStorage.getItem(INITIALIZED_SILENT_SIGN_IN);
295
- return Boolean(raw ? JSON.parse(raw) : null);
296
- }
297
- /**
298
285
  * Checks whether the current URL indicates a successful sign-out redirect.
299
286
  * Clears the query string and session data if `true`.
300
287
  *
@@ -357,21 +344,6 @@ var SPAUtils = class SPAUtils {
357
344
  return !!urlObject.searchParams.get(ERROR) && urlObject.searchParams.get(STATE_QUERY) !== OIDCRequestConstants.Params.SIGN_OUT_SUCCESS;
358
345
  }
359
346
  /**
360
- * Returns `true` if no prompt-none request has been sent yet this session.
361
- */
362
- static canSendPromptNoneRequest() {
363
- const raw = sessionStorage.getItem(PROMPT_NONE_REQUEST_SENT);
364
- return !(raw ? JSON.parse(raw) : null);
365
- }
366
- /**
367
- * Records whether a prompt-none request has been sent.
368
- *
369
- * @param canSend - `true` marks the request as sent.
370
- */
371
- static setPromptNoneRequestSent(canSend) {
372
- sessionStorage.setItem(PROMPT_NONE_REQUEST_SENT, JSON.stringify(canSend));
373
- }
374
- /**
375
347
  * Waits until the browser has redirected (non-blocking delay).
376
348
  *
377
349
  * @param time - Time to wait in seconds (default: 3).
@@ -400,7 +372,7 @@ var SPAUtils_default = SPAUtils;
400
372
  //#region src/utils/AuthenticationHelper.ts
401
373
  /**
402
374
  * Browser-level authentication helper that orchestrates HTTP requests with token attachment,
403
- * automatic token refresh, session management, and the silent sign-in flow.
375
+ * automatic token refresh, and the silent sign-in flow.
404
376
  *
405
377
  * @typeParam T - The browser client config extension type.
406
378
  */
@@ -460,18 +432,6 @@ var AuthenticationHelper = class {
460
432
  httpClient?.disableHandler && httpClient.disableHandler();
461
433
  }
462
434
  /**
463
- * Initializes OIDC Session Management via an RP iframe.
464
- *
465
- * @param config - The current auth config.
466
- * @param oidcEndpoints - Resolved OIDC provider endpoints.
467
- * @param getSessionState - Returns the current session state from storage.
468
- * @param getAuthzURL - Builds an authorization URL with optional params.
469
- * @param sessionManagementHelper - The session management helper instance.
470
- */
471
- initializeSessionManger(config, oidcEndpoints, getSessionState, getAuthzURL, sessionManagementHelper) {
472
- sessionManagementHelper.initialize(config.clientId, oidcEndpoints.checkSessionIframe ?? "", getSessionState, config.checkSessionInterval ?? 3, config.sessionRefreshInterval ?? 300, config.afterSignInUrl, getAuthzURL);
473
- }
474
- /**
475
435
  * Executes a custom token exchange grant, enforcing `allowedExternalUrls` rules when applicable.
476
436
  *
477
437
  * @param config - The token exchange configuration.
@@ -641,76 +601,97 @@ var AuthenticationHelper = class {
641
601
  });
642
602
  }
643
603
  /**
644
- * Executes the silent sign-in flow using a prompt-none request via an iFrame.
604
+ * Executes the silent sign-in flow by loading a `prompt=none` authorize request in a hidden iframe.
645
605
  *
646
606
  * @param constructSilentSignInUrl - Builds the prompt-none authorize URL.
647
607
  * @param requestAccessToken - Exchanges the returned code for tokens.
648
- * @param sessionManagementHelper - Handles the iFrame prompt-none response.
649
608
  * @param additionalParams - Extra authorize request params.
650
609
  * @param tokenRequestConfig - Additional params for the token request.
610
+ * @param timeout - How long to wait for the iframe's response, in milliseconds.
651
611
  * @returns The user session, or `false` if the user is not signed in.
652
612
  */
653
- async signInSilently(constructSilentSignInUrl, requestAccessToken, sessionManagementHelper, additionalParams, tokenRequestConfig) {
613
+ async signInSilently(constructSilentSignInUrl, requestAccessToken, additionalParams, tokenRequestConfig, timeout = SILENT_SIGN_IN_TIMEOUT) {
654
614
  if (SPAUtils_default.isInitializedSilentSignIn()) {
655
- await sessionManagementHelper.receivePromptNoneResponse();
615
+ await this.handleSilentSignInResponse();
656
616
  return Promise.resolve({
657
617
  allowedScopes: "",
658
618
  displayName: "",
659
619
  email: "",
660
- sessionState: "",
661
620
  sub: "",
662
621
  tenantDomain: "",
663
622
  username: ""
664
623
  });
665
624
  }
666
- const promptNoneIFrame = document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(PROMPT_NONE_IFRAME);
625
+ let url;
667
626
  try {
668
- promptNoneIFrame.src = await constructSilentSignInUrl(additionalParams);
627
+ url = await constructSilentSignInUrl(additionalParams);
669
628
  } catch (error) {
670
629
  return Promise.reject(error);
671
630
  }
631
+ const silentSignInIFrame = document.createElement("iframe");
632
+ silentSignInIFrame.style.display = "none";
672
633
  return new Promise((resolve, reject) => {
634
+ const cleanUp = () => {
635
+ window.removeEventListener("message", listenToSilentSignInIFrame);
636
+ clearTimeout(timer);
637
+ silentSignInIFrame.remove();
638
+ };
673
639
  const timer = setTimeout(() => {
640
+ cleanUp();
674
641
  resolve(false);
675
- }, 1e4);
676
- const listenToPromptNoneIFrame = async (e) => {
642
+ }, timeout);
643
+ const listenToSilentSignInIFrame = async (e) => {
644
+ if (e.origin !== window.location.origin || e.source !== silentSignInIFrame.contentWindow) return;
677
645
  const data = e.data;
678
- if (data?.type == CHECK_SESSION_SIGNED_OUT) {
679
- window.removeEventListener("message", listenToPromptNoneIFrame);
680
- clearTimeout(timer);
646
+ if (data?.type === SILENT_SIGN_IN_SIGNED_OUT) {
647
+ cleanUp();
681
648
  resolve(false);
682
649
  }
683
- if (data?.type == CHECK_SESSION_SIGNED_IN && data?.data?.code) {
650
+ if (data?.type === SILENT_SIGN_IN_SIGNED_IN && data?.data?.code) {
684
651
  const authInfo = data.data;
685
- requestAccessToken(authInfo.code, authInfo.sessionState, authInfo.state, tokenRequestConfig).then((response) => {
686
- window.removeEventListener("message", listenToPromptNoneIFrame);
687
- resolve(response);
688
- }).catch((error) => {
689
- window.removeEventListener("message", listenToPromptNoneIFrame);
690
- reject(error);
691
- }).finally(() => {
692
- clearTimeout(timer);
693
- });
652
+ cleanUp();
653
+ requestAccessToken(authInfo.code, authInfo.state, tokenRequestConfig).then(resolve).catch(reject);
694
654
  }
695
655
  };
696
- window.addEventListener("message", listenToPromptNoneIFrame);
656
+ window.addEventListener("message", listenToSilentSignInIFrame);
657
+ silentSignInIFrame.src = url;
658
+ document.body.appendChild(silentSignInIFrame);
697
659
  });
698
660
  }
699
661
  /**
662
+ * Handles the page load inside the silent sign-in iframe: relays the authorization response to the
663
+ * parent window and blanks the iframe.
664
+ *
665
+ * @returns `true` if the current page load was a silent sign-in response.
666
+ */
667
+ async handleSilentSignInResponse() {
668
+ const url = new URL(window.location.href);
669
+ const state = url.searchParams.get(STATE_QUERY);
670
+ if (state === null || !state.includes(SILENT_SIGN_IN_STATE)) return false;
671
+ const code$1 = url.searchParams.get("code");
672
+ const message = code$1 !== null && code$1.length !== 0 ? {
673
+ data: {
674
+ code: code$1,
675
+ state
676
+ },
677
+ type: SILENT_SIGN_IN_SIGNED_IN
678
+ } : { type: SILENT_SIGN_IN_SIGNED_OUT };
679
+ window.parent.postMessage(message, window.location.origin);
680
+ window.location.href = "about:blank";
681
+ await SPAUtils_default.waitTillPageRedirect();
682
+ return true;
683
+ }
684
+ /**
700
685
  * Handles the early-return path of `signIn()` when a session already exists
701
- * or the page is handling a prompt-none response.
686
+ * or the page is handling a silent sign-in response.
702
687
  *
703
- * @param shouldStopAuthn - Returns `true` if we should short-circuit and return early.
704
- * @param checkSession - Callback to initialize OIDC session management.
705
688
  * @returns The current user if already signed in, or `undefined` to continue normal sign-in.
706
689
  */
707
- async handleSignIn(shouldStopAuthn, checkSession) {
708
- const configAny = await this._storageManager.getConfigData();
709
- if (await shouldStopAuthn()) return Promise.resolve({
690
+ async handleSignIn() {
691
+ if (await this.handleSilentSignInResponse()) return Promise.resolve({
710
692
  allowedScopes: "",
711
693
  displayName: "",
712
694
  email: "",
713
- sessionState: "",
714
695
  sub: "",
715
696
  tenantDomain: "",
716
697
  username: ""
@@ -718,7 +699,6 @@ var AuthenticationHelper = class {
718
699
  if (await this._isSignedIn()) {
719
700
  await this._spaHelper.clearRefreshTokenTimeout();
720
701
  await this._spaHelper.refreshAccessTokenAutomatically(() => this.refreshAccessToken());
721
- if (configAny.syncSession) checkSession();
722
702
  return Promise.resolve(await this._getUser());
723
703
  }
724
704
  const error = new URL(window.location.href).searchParams.get(ERROR);
@@ -836,164 +816,6 @@ const navigate = (url) => {
836
816
  };
837
817
  var navigate_default = navigate;
838
818
 
839
- //#endregion
840
- //#region src/utils/SessionManagementHelper.ts
841
- /**
842
- * Factory that creates an OIDC Session Management helper using an RP iframe and polling.
843
- * Appends a hidden RP iframe to the document and returns the helper interface.
844
- *
845
- * @param signOut - Returns the sign-out URL for the current session.
846
- * @param setSessionState - Stores a new session state from a prompt-none response.
847
- * @returns A `SessionManagementHelperInterface` instance.
848
- */
849
- const createSessionManagementHelper = async (signOut, setSessionState) => {
850
- let _clientID;
851
- let _checkSessionEndpoint;
852
- let _sessionState;
853
- let _interval;
854
- let _redirectURL;
855
- let _sessionRefreshInterval;
856
- let _sessionRefreshIntervalTimeout;
857
- let _checkSessionIntervalTimeout;
858
- let _getSignInUrl;
859
- const initialize = (clientId, checkSessionEndpoint, getSessionState, interval, sessionRefreshInterval, redirectURL, getSignInUrl) => {
860
- _clientID = clientId;
861
- _checkSessionEndpoint = checkSessionEndpoint;
862
- _sessionState = getSessionState;
863
- _interval = interval;
864
- _redirectURL = redirectURL;
865
- _sessionRefreshInterval = sessionRefreshInterval;
866
- _getSignInUrl = getSignInUrl;
867
- if (_interval > -1) initiateCheckSession();
868
- if (_sessionRefreshInterval > -1) _sessionRefreshIntervalTimeout = setInterval(() => {
869
- sendPromptNoneRequest();
870
- }, _sessionRefreshInterval * 1e3);
871
- };
872
- const initiateCheckSession = async () => {
873
- if (!_checkSessionEndpoint || !_clientID || !_redirectURL) return;
874
- async function checkSession() {
875
- const sessionState = await _sessionState();
876
- if (Boolean(_clientID) && Boolean(sessionState)) {
877
- const message = `${_clientID} ${sessionState}`;
878
- (document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(OP_IFRAME)).contentWindow?.postMessage(message, _checkSessionEndpoint);
879
- }
880
- }
881
- const opIframe = document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(OP_IFRAME);
882
- opIframe.src = _checkSessionEndpoint + "?client_id=" + _clientID + "&redirect_uri=" + _redirectURL;
883
- _checkSessionIntervalTimeout = setInterval(checkSession, _interval * 1e3);
884
- listenToResponseFromOPIFrame();
885
- };
886
- const reset = () => {
887
- clearInterval(_checkSessionIntervalTimeout);
888
- clearInterval(_sessionRefreshIntervalTimeout);
889
- };
890
- const listenToResponseFromOPIFrame = () => {
891
- async function receiveMessage(e) {
892
- const targetOrigin = _checkSessionEndpoint;
893
- if (!targetOrigin || targetOrigin?.indexOf(e.origin) < 0 || e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) return;
894
- if (e.data === "unchanged") {} else if (e.data === "error") window.location.href = await signOut();
895
- else if (e.data === "changed") sendPromptNoneRequest();
896
- }
897
- window?.addEventListener("message", receiveMessage, false);
898
- };
899
- const sendPromptNoneRequest = async () => {
900
- const promptNoneIFrame = document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(PROMPT_NONE_IFRAME);
901
- if (SPAUtils_default.canSendPromptNoneRequest()) {
902
- SPAUtils_default.setPromptNoneRequestSent(true);
903
- const receiveMessageListener = (e) => {
904
- if (e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
905
- setSessionState(e?.data?.data ?? "");
906
- window?.removeEventListener("message", receiveMessageListener);
907
- }
908
- };
909
- window?.addEventListener("message", receiveMessageListener);
910
- promptNoneIFrame.src = await _getSignInUrl({
911
- prompt: "none",
912
- response_mode: "query",
913
- state: STATE
914
- });
915
- }
916
- };
917
- const receivePromptNoneResponse = async (setSessionStateFn) => {
918
- const state = new URL(window.location.href).searchParams.get(STATE_QUERY);
919
- const sessionState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.SESSION_STATE);
920
- const parent = window.parent.parent;
921
- if (state !== null && (state.includes(STATE) || state.includes(SILENT_SIGN_IN_STATE))) {
922
- const code$1 = new URL(window.location.href).searchParams.get("code");
923
- if (code$1 !== null && code$1.length !== 0) {
924
- if (state.includes(SILENT_SIGN_IN_STATE)) {
925
- const message = {
926
- data: {
927
- code: code$1,
928
- sessionState: sessionState ?? "",
929
- state
930
- },
931
- type: CHECK_SESSION_SIGNED_IN
932
- };
933
- sessionStorage.setItem(INITIALIZED_SILENT_SIGN_IN, "false");
934
- parent.postMessage(message, parent.origin);
935
- SPAUtils_default.setPromptNoneRequestSent(false);
936
- window.location.href = "about:blank";
937
- await SPAUtils_default.waitTillPageRedirect();
938
- return true;
939
- }
940
- const newSessionState = new URL(window.location.href).searchParams.get("session_state");
941
- setSessionStateFn && await setSessionStateFn(newSessionState);
942
- SPAUtils_default.setPromptNoneRequestSent(false);
943
- window.location.href = "about:blank";
944
- await SPAUtils_default.waitTillPageRedirect();
945
- return true;
946
- } else {
947
- if (state.includes(SILENT_SIGN_IN_STATE)) {
948
- const message = { type: CHECK_SESSION_SIGNED_OUT };
949
- window.parent.parent.postMessage(message, parent.origin);
950
- SPAUtils_default.setPromptNoneRequestSent(false);
951
- window.location.href = "about:blank";
952
- await SPAUtils_default.waitTillPageRedirect();
953
- return true;
954
- }
955
- SPAUtils_default.setPromptNoneRequestSent(false);
956
- const signOutURL = await signOut();
957
- parent.location.href = signOutURL;
958
- window.location.href = "about:blank";
959
- await SPAUtils_default.waitTillPageRedirect();
960
- return true;
961
- }
962
- }
963
- return false;
964
- };
965
- let rpIFrame = document.createElement("iframe");
966
- rpIFrame.setAttribute("id", RP_IFRAME);
967
- rpIFrame.style.display = "none";
968
- let rpIframeLoaded = false;
969
- rpIFrame.onload = () => {
970
- rpIFrame = document.getElementById(RP_IFRAME);
971
- const rpDoc = rpIFrame?.contentDocument;
972
- const opIFrame = rpDoc?.createElement("iframe");
973
- if (opIFrame) {
974
- opIFrame.setAttribute("id", OP_IFRAME);
975
- opIFrame.style.display = "none";
976
- }
977
- const promptNoneIFrame = rpDoc?.createElement("iframe");
978
- if (promptNoneIFrame) {
979
- promptNoneIFrame.setAttribute("id", PROMPT_NONE_IFRAME);
980
- promptNoneIFrame.style.display = "none";
981
- }
982
- opIFrame && rpIFrame?.contentDocument?.body?.appendChild(opIFrame);
983
- promptNoneIFrame && rpIFrame?.contentDocument?.body?.appendChild(promptNoneIFrame);
984
- rpIframeLoaded = true;
985
- };
986
- document?.body?.appendChild(rpIFrame);
987
- const sleep = () => new Promise((resolve) => setTimeout(resolve, 1));
988
- while (!rpIframeLoaded) await sleep();
989
- return {
990
- initialize,
991
- receivePromptNoneResponse,
992
- reset
993
- };
994
- };
995
- var SessionManagementHelper_default = createSessionManagementHelper;
996
-
997
819
  //#endregion
998
820
  //#region ../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
999
821
  var require_base64_js = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js": ((exports) => {
@@ -2596,10 +2418,7 @@ var SPAHelper_default = SPAHelper;
2596
2418
  const logger$2 = createPackageComponentLogger("@thunderid/browser", "ThunderIDBrowserClient");
2597
2419
  const BROWSER_DEFAULT_CONFIG = {
2598
2420
  autoLogoutOnTokenRefreshError: false,
2599
- checkSessionInterval: 3,
2600
- periodicTokenRefresh: false,
2601
- sessionRefreshInterval: 300,
2602
- syncSession: false
2421
+ periodicTokenRefresh: false
2603
2422
  };
2604
2423
  const initiateStore = (storage) => {
2605
2424
  switch (storage) {
@@ -2614,7 +2433,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2614
2433
  _browserInstanceId = 0;
2615
2434
  _httpClient;
2616
2435
  _spaHelper;
2617
- _sessionManagementHelper;
2618
2436
  _authHelper;
2619
2437
  _storage = BrowserStorage_default.SessionStorage;
2620
2438
  _getSignOutURLFromSessionStorage = false;
@@ -2653,7 +2471,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2653
2471
  await this._authHelper?.attachTokenToRequestConfig(request);
2654
2472
  };
2655
2473
  this._httpClient = FetchHttpClient_default.getInstance(this._browserInstanceId, true, attachToken);
2656
- this._sessionManagementHelper = await SessionManagementHelper_default(async () => this.getSignOutUrl(), (sessionState) => sm.setSessionDataParameter(OIDCRequestConstants.Params.SESSION_STATE, sessionState));
2657
2474
  this._authHelper = new AuthenticationHelper_default(sm, this._spaHelper, this._browserInstanceId, {
2658
2475
  exchangeToken: (cfg) => super.exchangeToken(cfg),
2659
2476
  getAccessToken: (sessionId) => this.getAccessToken(sessionId),
@@ -2694,30 +2511,27 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2694
2511
  isLoading() {
2695
2512
  return false;
2696
2513
  }
2697
- async signIn(config, authorizationCode, sessionState, state, tokenRequestConfig) {
2514
+ async signIn(config, authorizationCode, state, tokenRequestConfig) {
2698
2515
  await this.isInitialized();
2699
2516
  if (!SPAUtils_default.canContinueSignIn(Boolean(config?.callOnlyOnRedirect), authorizationCode)) return;
2700
2517
  delete config?.callOnlyOnRedirect;
2701
- const user = await this._signInInternal(config, authorizationCode, sessionState, state, tokenRequestConfig);
2518
+ const user = await this._signInInternal(config, authorizationCode, state, tokenRequestConfig);
2702
2519
  if (user && this._onSignInCallback) this._onSignInCallback(user);
2703
2520
  return user;
2704
2521
  }
2705
- async _signInInternal(signInConfig, authorizationCode, sessionState, state, tokenRequestConfig) {
2522
+ async _signInInternal(signInConfig, authorizationCode, state, tokenRequestConfig) {
2706
2523
  const sm = this.getStorageManager();
2707
2524
  const config = await sm.getConfigData();
2708
- const basicUserInfo = await this._authHelper.handleSignIn(() => this._shouldStopAuthn(), () => this._checkSession());
2525
+ const basicUserInfo = await this._authHelper.handleSignIn();
2709
2526
  if (basicUserInfo) return basicUserInfo;
2710
2527
  let resolvedAuthorizationCode;
2711
- let resolvedSessionState;
2712
2528
  let resolvedState;
2713
2529
  let resolvedTokenRequestConfig = { params: {} };
2714
2530
  if (config?.responseMode === "form_post" && authorizationCode) {
2715
2531
  resolvedAuthorizationCode = authorizationCode;
2716
- resolvedSessionState = sessionState ?? "";
2717
2532
  resolvedState = state ?? "";
2718
2533
  } else {
2719
2534
  resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
2720
- resolvedSessionState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.SESSION_STATE) ?? "";
2721
2535
  resolvedState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.STATE) ?? "";
2722
2536
  SPAUtils_default.removeAuthorizationCode();
2723
2537
  }
@@ -2725,7 +2539,13 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2725
2539
  sm.setSessionStatus("true");
2726
2540
  const storedTokenRequestConfig = await sm.getTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY);
2727
2541
  if (storedTokenRequestConfig && typeof storedTokenRequestConfig === "string") resolvedTokenRequestConfig = JSON.parse(storedTokenRequestConfig);
2728
- return this._exchangeCodeForTokens(resolvedAuthorizationCode, resolvedSessionState, resolvedState, resolvedTokenRequestConfig);
2542
+ return this._exchangeCodeForTokens(resolvedAuthorizationCode, resolvedState, resolvedTokenRequestConfig);
2543
+ }
2544
+ if ((config?.session)?.silentSignIn?.beforeRedirect && window.self === window.top && !signInConfig?.["prompt"]) try {
2545
+ const silentUser = await this._signInSilentlyInternal(signInConfig, tokenRequestConfig);
2546
+ if (silentUser && typeof silentUser === "object") return silentUser;
2547
+ } catch (error) {
2548
+ logger$2.debug("Checking for an existing session failed; continuing with the sign-in redirect.", error);
2729
2549
  }
2730
2550
  return this.getSignInUrl(signInConfig).then(async (url) => {
2731
2551
  if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE) {
@@ -2739,37 +2559,39 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2739
2559
  allowedScopes: "",
2740
2560
  displayName: "",
2741
2561
  email: "",
2742
- sessionState: "",
2743
2562
  sub: "",
2744
2563
  tenantDomain: "",
2745
2564
  username: ""
2746
2565
  };
2747
2566
  });
2748
2567
  }
2749
- async _exchangeCodeForTokens(authorizationCode, sessionState, state, tokenRequestConfig) {
2568
+ async _exchangeCodeForTokens(authorizationCode, state, tokenRequestConfig) {
2750
2569
  const config = await this.getStorageManager().getConfigData();
2751
- if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE && sessionState) {
2752
- const pkceKey = extractPkceStorageKeyFromState(sessionState);
2570
+ if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE && state) {
2571
+ const pkceKey = extractPkceStorageKeyFromState(state);
2753
2572
  const pkce = SPAUtils_default.getPKCE(pkceKey);
2754
2573
  await this.setPKCECode(pkce, pkceKey);
2755
2574
  }
2756
- await this.requestAccessToken(authorizationCode, sessionState ?? "", state ?? "", void 0, tokenRequestConfig);
2575
+ await this.requestAccessToken(authorizationCode, state ?? "", void 0, tokenRequestConfig);
2757
2576
  try {
2758
2577
  const signOutUrl = await this.getSignOutUrl();
2759
2578
  SPAUtils_default.setSignOutURL(signOutUrl, config.clientId, this._browserInstanceId);
2760
2579
  } catch {}
2761
2580
  await this._spaHelper.clearRefreshTokenTimeout();
2762
2581
  await this._spaHelper.refreshAccessTokenAutomatically(() => this.refreshAccessToken());
2763
- if (config.syncSession) this._checkSession();
2764
2582
  return this.getUser();
2765
2583
  }
2766
2584
  async signInSilently(additionalParams, tokenRequestConfig) {
2767
2585
  await this.isInitialized();
2768
2586
  if (SPAUtils_default.wasSignInCalled()) return;
2769
- const response = await this._authHelper.signInSilently((params) => this._constructSilentSignInUrl(params), (code$1, ss, s, trc) => this._exchangeCodeForTokens(code$1, ss, s, trc), this._sessionManagementHelper, additionalParams, tokenRequestConfig);
2587
+ const response = await this._signInSilentlyInternal(additionalParams, tokenRequestConfig);
2770
2588
  if (this._onSignInCallback && response) this._onSignInCallback(response);
2771
2589
  return response;
2772
2590
  }
2591
+ async _signInSilentlyInternal(additionalParams, tokenRequestConfig) {
2592
+ const { session } = await this.getStorageManager().getConfigData();
2593
+ return this._authHelper.signInSilently((params) => this._constructSilentSignInUrl(params), (code$1, s, trc) => this._exchangeCodeForTokens(code$1, s, trc), additionalParams, tokenRequestConfig, session?.silentSignIn?.timeout);
2594
+ }
2773
2595
  async signOut(_options, sessionIdOrAfterSignOut, afterSignOutParam) {
2774
2596
  let afterSignOut;
2775
2597
  let sessionId;
@@ -2865,7 +2687,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2865
2687
  await this._validateMethod();
2866
2688
  const timer = await this._spaHelper.getRefreshTimeoutTimer();
2867
2689
  await super.revokeAccessToken(userId);
2868
- this._sessionManagementHelper?.reset();
2869
2690
  await this._spaHelper.clearRefreshTokenTimeout(timer);
2870
2691
  this._onEndUserSession && await this._onEndUserSession(true);
2871
2692
  return true;
@@ -2879,17 +2700,7 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2879
2700
  }
2880
2701
  async reInitialize(config) {
2881
2702
  await this.isInitialized();
2882
- const existingConfig = await this.getStorageManager().getConfigData();
2883
- const isCheckSessionIframeDifferent = !(existingConfig?.endpoints?.checkSessionIframe && config?.endpoints?.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === config.endpoints.checkSessionIframe);
2884
- const result = await super.reInitialize(config);
2885
- if ({
2886
- ...existingConfig,
2887
- ...config
2888
- }.syncSession && isCheckSessionIframeDifferent) {
2889
- this._sessionManagementHelper?.reset();
2890
- this._checkSession();
2891
- }
2892
- return result;
2703
+ return super.reInitialize(config);
2893
2704
  }
2894
2705
  async startAutoRefreshToken() {
2895
2706
  await this.isInitialized();
@@ -2952,18 +2763,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
2952
2763
  default: throw new ThunderIDAuthException("SPA-AUTH_CLIENT-ON-IV01", "Invalid hook.", `Unknown hook: "${hook}"`);
2953
2764
  }
2954
2765
  }
2955
- async _checkSession() {
2956
- const oidcEndpoints = await this.getOpenIDProviderEndpoints();
2957
- const sm = this.getStorageManager();
2958
- const config = await sm.getConfigData();
2959
- this._authHelper.initializeSessionManger(config, oidcEndpoints, async () => (await sm.getSessionData())?.session_state ?? "", async (params) => this.getSignInUrl(params), this._sessionManagementHelper);
2960
- }
2961
- async _shouldStopAuthn() {
2962
- const sm = this.getStorageManager();
2963
- return this._sessionManagementHelper.receivePromptNoneResponse(async (sessionState) => {
2964
- await sm.setSessionDataParameter(OIDCRequestConstants.Params.SESSION_STATE, sessionState ?? "");
2965
- });
2966
- }
2967
2766
  _enableRetrievingSignOutURLFromSession(config) {
2968
2767
  if (config.preventSignOutURLUpdate) this._getSignOutURLFromSessionStorage = true;
2969
2768
  }
@@ -3012,10 +2811,10 @@ var Hooks_default = Hooks;
3012
2811
  //#endregion
3013
2812
  //#region src/utils/hasAuthParamsInUrl.ts
3014
2813
  /**
3015
- * Utility to check if `code` and `session_state` are available in the URL as search params.
2814
+ * Utility to check if `code` is available in the URL as a search param.
3016
2815
  *
3017
2816
  * @param params - The URL search params to check. Defaults to `window.location.search`.
3018
- * @return `true` if the URL contains `code` and `session_state` search params, otherwise `false`.
2817
+ * @return `true` if the URL contains a `code` search param, otherwise `false`.
3019
2818
  */
3020
2819
  const hasAuthParamsInUrl = (params = window.location.search) => {
3021
2820
  return /[?&]code=[^&]+/.test(params);
@@ -3943,5 +3742,5 @@ const normalizeBorderRadius = (raw) => {
3943
3742
  var normalizeBorderRadius_default = normalizeBorderRadius;
3944
3743
 
3945
3744
  //#endregion
3946
- export { ACCESS_TOKEN_INVALID, ANONYMOUS_ANIMAL_ICONS, ANONYMOUS_ENTITY_ICONS, AVATAR_GRADIENT_COUNT, AVATAR_URI_SCHEME, AuthenticationHelper_default as AuthenticationHelper, Hooks as BrowserHooks, BrowserStorage_default as BrowserStorage, CHECK_SESSION_SIGNED_IN, CHECK_SESSION_SIGNED_OUT, CUSTOM_GRANT_CONFIG, ERROR, ERROR_DESCRIPTION, FetchHttpClient_default as FetchHttpClient, Hooks_default as Hooks, INITIALIZED_SILENT_SIGN_IN, LocalStore_default as LocalStore, MemoryStore_default as MemoryStore, OP_IFRAME, PROMPT_NONE_IFRAME, PROMPT_NONE_REQUEST_SENT, REFRESH_ACCESS_TOKEN_ERR0R, RP_IFRAME, SET_SESSION_STATE_FROM_IFRAME, SILENT_SIGN_IN_STATE, SPACryptoUtils_default as SPACryptoUtils, SPAHelper_default as SPAHelper, SPAUtils_default as SPAUtils, STATE, STATE_QUERY, SessionStore_default as SessionStore, TOKEN_REQUEST_CONFIG_KEY, ThunderIDBrowserClient_default as ThunderIDBrowserClient, buildAvatarSpec_default as buildAvatarSpec, createClassObserver, createHttpClientFetcher_default as createHttpClientFetcher, createMediaQueryListener, SessionManagementHelper_default as createSessionManagementHelper, deriveAvatarContent, detectThemeMode, extractAvatarParamsFromUri_default as extractAvatarParamsFromUri, generateAvatarDataUri_default as generateAvatarDataUri, getActiveTheme_default as getActiveTheme, handleWebAuthnAuthentication_default as handleWebAuthnAuthentication, hasAuthParamsInUrl_default as hasAuthParamsInUrl, hasCalledForThisInstanceInUrl_default as hasCalledForThisInstanceInUrl, http_default as http, isAvatarUri_default as isAvatarUri, navigate_default as navigate, normalizeBorderRadius_default as normalizeBorderRadius, pickAnonymousAvatarName_default as pickAnonymousAvatarName, pickAnonymousEntityName_default as pickAnonymousEntityName, resolveEmojiUrisInHtml_default as resolveEmojiUrisInHtml, resolveLogoUri_default as resolveLogoUri };
3745
+ export { ACCESS_TOKEN_INVALID, ANONYMOUS_ANIMAL_ICONS, ANONYMOUS_ENTITY_ICONS, AVATAR_GRADIENT_COUNT, AVATAR_URI_SCHEME, AuthenticationHelper_default as AuthenticationHelper, Hooks as BrowserHooks, BrowserStorage_default as BrowserStorage, CUSTOM_GRANT_CONFIG, ERROR, ERROR_DESCRIPTION, FetchHttpClient_default as FetchHttpClient, Hooks_default as Hooks, LocalStore_default as LocalStore, MemoryStore_default as MemoryStore, REFRESH_ACCESS_TOKEN_ERR0R, SILENT_SIGN_IN_SIGNED_IN, SILENT_SIGN_IN_SIGNED_OUT, SILENT_SIGN_IN_STATE, SILENT_SIGN_IN_TIMEOUT, SPACryptoUtils_default as SPACryptoUtils, SPAHelper_default as SPAHelper, SPAUtils_default as SPAUtils, STATE_QUERY, SessionStore_default as SessionStore, TOKEN_REQUEST_CONFIG_KEY, ThunderIDBrowserClient_default as ThunderIDBrowserClient, buildAvatarSpec_default as buildAvatarSpec, createClassObserver, createHttpClientFetcher_default as createHttpClientFetcher, createMediaQueryListener, deriveAvatarContent, detectThemeMode, extractAvatarParamsFromUri_default as extractAvatarParamsFromUri, generateAvatarDataUri_default as generateAvatarDataUri, getActiveTheme_default as getActiveTheme, handleWebAuthnAuthentication_default as handleWebAuthnAuthentication, hasAuthParamsInUrl_default as hasAuthParamsInUrl, hasCalledForThisInstanceInUrl_default as hasCalledForThisInstanceInUrl, http_default as http, isAvatarUri_default as isAvatarUri, navigate_default as navigate, normalizeBorderRadius_default as normalizeBorderRadius, pickAnonymousAvatarName_default as pickAnonymousAvatarName, pickAnonymousEntityName_default as pickAnonymousEntityName, resolveEmojiUrisInHtml_default as resolveEmojiUrisInHtml, resolveLogoUri_default as resolveLogoUri };
3947
3746
  //# sourceMappingURL=index.js.map