oidc-spa 7.1.10 → 7.2.0-rc.2
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/backend.js +235 -352
- package/backend.js.map +1 -1
- package/core/AuthResponse.js +12 -49
- package/core/AuthResponse.js.map +1 -1
- package/core/Oidc.d.ts +1 -2
- package/core/Oidc.js.map +1 -1
- package/core/OidcInitializationError.d.ts +0 -13
- package/core/OidcInitializationError.js +8 -318
- package/core/OidcInitializationError.js.map +1 -1
- package/core/OidcMetadata.js +1 -1
- package/core/OidcMetadata.js.map +1 -1
- package/core/StateData.d.ts +5 -5
- package/core/StateData.js +25 -25
- package/core/StateData.js.map +1 -1
- package/core/configId.js +1 -1
- package/core/configId.js.map +1 -1
- package/core/createOidc.d.ts +8 -0
- package/core/createOidc.js +1030 -1292
- package/core/createOidc.js.map +1 -1
- package/core/diagnostic.d.ts +14 -0
- package/core/diagnostic.js +214 -0
- package/core/diagnostic.js.map +1 -0
- package/core/evtIsUserActive.js +26 -27
- package/core/evtIsUserActive.js.map +1 -1
- package/core/handleOidcCallback.js +99 -154
- package/core/handleOidcCallback.js.map +1 -1
- package/core/iframeMessageProtection.d.ts +1 -1
- package/core/iframeMessageProtection.js +40 -106
- package/core/iframeMessageProtection.js.map +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +3 -3
- package/core/index.js.map +1 -1
- package/core/initialLocationHref.js +1 -1
- package/core/initialLocationHref.js.map +1 -1
- package/core/isNewBrowserSession.js +8 -8
- package/core/isNewBrowserSession.js.map +1 -1
- package/core/loginOrGoToAuthServer.d.ts +1 -1
- package/core/loginOrGoToAuthServer.js +188 -310
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/loginPropagationToOtherTabs.js +15 -16
- package/core/loginPropagationToOtherTabs.js.map +1 -1
- package/core/loginSilent.d.ts +2 -3
- package/core/loginSilent.js +118 -214
- package/core/loginSilent.js.map +1 -1
- package/core/logoutPropagationToOtherTabs.js +15 -16
- package/core/logoutPropagationToOtherTabs.js.map +1 -1
- package/core/oidcClientTsUserToTokens.d.ts +1 -1
- package/core/oidcClientTsUserToTokens.js +75 -72
- package/core/oidcClientTsUserToTokens.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js +23 -89
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/core/persistedAuthState.js +13 -13
- package/core/persistedAuthState.js.map +1 -1
- package/entrypoint.js +9 -9
- package/entrypoint.js.map +1 -1
- package/esm/core/AuthResponse.d.ts +5 -0
- package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +3 -9
- package/esm/core/AuthResponse.js.map +1 -0
- package/esm/core/Oidc.d.ts +126 -0
- package/esm/core/Oidc.js +2 -0
- package/esm/core/Oidc.js.map +1 -0
- package/esm/core/OidcInitializationError.d.ts +7 -0
- package/esm/core/OidcInitializationError.js +17 -0
- package/esm/core/OidcInitializationError.js.map +1 -0
- package/{src/core/OidcMetadata.ts → esm/core/OidcMetadata.d.ts} +0 -5
- package/esm/core/OidcMetadata.js +3 -0
- package/esm/core/OidcMetadata.js.map +1 -0
- package/esm/core/StateData.d.ts +42 -0
- package/esm/core/StateData.js +55 -0
- package/esm/core/StateData.js.map +1 -0
- package/esm/core/configId.d.ts +4 -0
- package/esm/core/configId.js +4 -0
- package/esm/core/configId.js.map +1 -0
- package/esm/core/createOidc.d.ts +132 -0
- package/{src/core/createOidc.ts → esm/core/createOidc.js} +282 -826
- package/esm/core/createOidc.js.map +1 -0
- package/esm/core/diagnostic.d.ts +14 -0
- package/{src/core/OidcInitializationError.ts → esm/core/diagnostic.js} +40 -117
- package/esm/core/diagnostic.js.map +1 -0
- package/esm/core/evtIsUserActive.d.ts +5 -0
- package/{src/core/evtIsUserActive.ts → esm/core/evtIsUserActive.js} +14 -46
- package/esm/core/evtIsUserActive.js.map +1 -0
- package/esm/core/handleOidcCallback.d.ts +13 -0
- package/{src/core/handleOidcCallback.ts → esm/core/handleOidcCallback.js} +56 -131
- package/esm/core/handleOidcCallback.js.map +1 -0
- package/esm/core/iframeMessageProtection.d.ts +20 -0
- package/{src/core/iframeMessageProtection.ts → esm/core/iframeMessageProtection.js} +14 -49
- package/esm/core/iframeMessageProtection.js.map +1 -0
- package/{src/core/index.ts → esm/core/index.d.ts} +1 -1
- package/esm/core/index.js +4 -0
- package/esm/core/index.js.map +1 -0
- package/esm/core/initialLocationHref.d.ts +1 -0
- package/{src/core/initialLocationHref.ts → esm/core/initialLocationHref.js} +1 -1
- package/esm/core/initialLocationHref.js.map +1 -0
- package/esm/core/isNewBrowserSession.d.ts +9 -0
- package/{src/core/isNewBrowserSession.ts → esm/core/isNewBrowserSession.js} +3 -15
- package/esm/core/isNewBrowserSession.js.map +1 -0
- package/esm/core/loginOrGoToAuthServer.d.ts +40 -0
- package/{src/core/loginOrGoToAuthServer.ts → esm/core/loginOrGoToAuthServer.js} +60 -168
- package/esm/core/loginOrGoToAuthServer.js.map +1 -0
- package/esm/core/loginPropagationToOtherTabs.d.ts +8 -0
- package/{src/core/loginPropagationToOtherTabs.ts → esm/core/loginPropagationToOtherTabs.js} +7 -25
- package/esm/core/loginPropagationToOtherTabs.js.map +1 -0
- package/esm/core/loginSilent.d.ts +28 -0
- package/esm/core/loginSilent.js +125 -0
- package/esm/core/loginSilent.js.map +1 -0
- package/esm/core/logoutPropagationToOtherTabs.d.ts +10 -0
- package/{src/core/logoutPropagationToOtherTabs.ts → esm/core/logoutPropagationToOtherTabs.js} +8 -28
- package/esm/core/logoutPropagationToOtherTabs.js.map +1 -0
- package/esm/core/oidcClientTsUserToTokens.d.ts +11 -0
- package/esm/core/oidcClientTsUserToTokens.js +155 -0
- package/esm/core/oidcClientTsUserToTokens.js.map +1 -0
- package/esm/core/ongoingLoginOrRefreshProcesses.d.ts +6 -0
- package/{src/core/ongoingLoginOrRefreshProcesses.ts → esm/core/ongoingLoginOrRefreshProcesses.js} +6 -24
- package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -0
- package/esm/core/persistedAuthState.d.ts +28 -0
- package/esm/core/persistedAuthState.js +64 -0
- package/esm/core/persistedAuthState.js.map +1 -0
- package/esm/entrypoint.d.ts +7 -0
- package/{src/entrypoint.ts → esm/entrypoint.js} +3 -26
- package/esm/entrypoint.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -0
- package/esm/keycloak/index.d.ts +3 -0
- package/esm/keycloak/index.js +3 -0
- package/esm/keycloak/index.js.map +1 -0
- package/esm/keycloak/isKeycloak.d.ts +3 -0
- package/esm/keycloak/isKeycloak.js +17 -0
- package/esm/keycloak/isKeycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/esm/keycloak/keycloak-js/Keycloak.js +774 -0
- package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/index.d.ts +2 -0
- package/esm/keycloak/keycloak-js/index.js +2 -0
- package/esm/keycloak/keycloak-js/index.js.map +1 -0
- package/esm/keycloak/keycloak-js/types.d.ts +361 -0
- package/esm/keycloak/keycloak-js/types.js +2 -0
- package/esm/keycloak/keycloak-js/types.js.map +1 -0
- package/esm/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
- package/esm/keycloak/keycloakIssuerUriParsed.js +16 -0
- package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -0
- package/esm/keycloak/keycloakUtils.d.ts +37 -0
- package/esm/keycloak/keycloakUtils.js +44 -0
- package/esm/keycloak/keycloakUtils.js.map +1 -0
- package/esm/keycloak-js.d.ts +1 -0
- package/esm/keycloak-js.js +2 -0
- package/esm/keycloak-js.js.map +1 -0
- package/esm/mock/index.js +2 -0
- package/esm/mock/index.js.map +1 -0
- package/esm/mock/oidc.d.ts +19 -0
- package/{src/mock/oidc.ts → esm/mock/oidc.js} +28 -88
- package/esm/mock/oidc.js.map +1 -0
- package/esm/mock/react.d.ts +58 -0
- package/esm/mock/react.js +7 -0
- package/esm/mock/react.js.map +1 -0
- package/esm/react/index.js +2 -0
- package/esm/react/index.js.map +1 -0
- package/esm/react/react.d.ts +102 -0
- package/esm/react/react.js +221 -0
- package/esm/react/react.js.map +1 -0
- package/esm/tools/Deferred.d.ts +14 -0
- package/esm/tools/Deferred.js +23 -0
- package/esm/tools/Deferred.js.map +1 -0
- package/esm/tools/EphemeralSessionStorage.d.ts +12 -0
- package/{src/tools/EphemeralSessionStorage.ts → esm/tools/EphemeralSessionStorage.js} +30 -112
- package/esm/tools/EphemeralSessionStorage.js.map +1 -0
- package/esm/tools/Evt.d.ts +11 -0
- package/{src/tools/Evt.ts → esm/tools/Evt.js} +7 -25
- package/esm/tools/Evt.js.map +1 -0
- package/esm/tools/StatefulEvt.d.ts +12 -0
- package/esm/tools/StatefulEvt.js +21 -0
- package/esm/tools/StatefulEvt.js.map +1 -0
- package/esm/tools/ValueOrAsyncGetter.js +2 -0
- package/esm/tools/ValueOrAsyncGetter.js.map +1 -0
- package/esm/tools/asymmetricEncryption.d.ts +18 -0
- package/esm/tools/asymmetricEncryption.js +85 -0
- package/esm/tools/asymmetricEncryption.js.map +1 -0
- package/esm/tools/base64.d.ts +2 -0
- package/{src/tools/base64.ts → esm/tools/base64.js} +3 -3
- package/esm/tools/base64.js.map +1 -0
- package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +8 -0
- package/{src/tools/createObjectThatThrowsIfAccessed.ts → esm/tools/createObjectThatThrowsIfAccessed.js} +7 -18
- package/esm/tools/createObjectThatThrowsIfAccessed.js.map +1 -0
- package/esm/tools/decodeJwt.d.ts +25 -0
- package/esm/tools/decodeJwt.js +60 -0
- package/esm/tools/decodeJwt.js.map +1 -0
- package/esm/tools/generateUrlSafeRandom.d.ts +3 -0
- package/{src/tools/generateUrlSafeRandom.ts → esm/tools/generateUrlSafeRandom.js} +5 -8
- package/esm/tools/generateUrlSafeRandom.js.map +1 -0
- package/esm/tools/getDownlinkAndRtt.d.ts +4 -0
- package/{src/tools/getDownlinkAndRtt.ts → esm/tools/getDownlinkAndRtt.js} +6 -10
- package/esm/tools/getDownlinkAndRtt.js.map +1 -0
- package/esm/tools/getIsOnline.d.ts +7 -0
- package/{src/tools/getIsOnline.ts → esm/tools/getIsOnline.js} +3 -9
- package/esm/tools/getIsOnline.js.map +1 -0
- package/esm/tools/getIsValidRemoteJson.d.ts +1 -0
- package/esm/tools/getIsValidRemoteJson.js +15 -0
- package/esm/tools/getIsValidRemoteJson.js.map +1 -0
- package/esm/tools/getPrUserInteraction.d.ts +4 -0
- package/{src/tools/getPrUserInteraction.ts → esm/tools/getPrUserInteraction.js} +2 -6
- package/esm/tools/getPrUserInteraction.js.map +1 -0
- package/esm/tools/getUserEnvironmentInfo.d.ts +1 -0
- package/esm/tools/getUserEnvironmentInfo.js +50 -0
- package/esm/tools/getUserEnvironmentInfo.js.map +1 -0
- package/esm/tools/haveSharedParentDomain.d.ts +4 -0
- package/{src/tools/haveSharedParentDomain.ts → esm/tools/haveSharedParentDomain.js} +3 -5
- package/esm/tools/haveSharedParentDomain.js.map +1 -0
- package/esm/tools/isDev.d.ts +1 -0
- package/{src/tools/isDev.ts → esm/tools/isDev.js} +5 -12
- package/esm/tools/isDev.js.map +1 -0
- package/esm/tools/parseKeycloakIssuerUri.d.ts +30 -0
- package/esm/tools/parseKeycloakIssuerUri.js +33 -0
- package/esm/tools/parseKeycloakIssuerUri.js.map +1 -0
- package/esm/tools/readExpirationTimeInJwt.d.ts +1 -0
- package/{src/tools/readExpirationTimeInJwt.ts → esm/tools/readExpirationTimeInJwt.js} +6 -7
- package/esm/tools/readExpirationTimeInJwt.js.map +1 -0
- package/esm/tools/startCountdown.d.ts +11 -0
- package/{src/tools/startCountdown.ts → esm/tools/startCountdown.js} +6 -17
- package/esm/tools/startCountdown.js.map +1 -0
- package/esm/tools/subscribeToUserInteraction.d.ts +6 -0
- package/{src/tools/subscribeToUserInteraction.ts → esm/tools/subscribeToUserInteraction.js} +4 -13
- package/esm/tools/subscribeToUserInteraction.js.map +1 -0
- package/esm/tools/toFullyQualifiedUrl.d.ts +10 -0
- package/{src/tools/toFullyQualifiedUrl.ts → esm/tools/toFullyQualifiedUrl.js} +7 -25
- package/esm/tools/toFullyQualifiedUrl.js.map +1 -0
- package/esm/tools/toHumanReadableDuration.d.ts +1 -0
- package/{src/tools/toHumanReadableDuration.ts → esm/tools/toHumanReadableDuration.js} +8 -5
- package/esm/tools/toHumanReadableDuration.js.map +1 -0
- package/esm/tools/urlSearchParams.d.ts +19 -0
- package/{src/tools/urlSearchParams.ts → esm/tools/urlSearchParams.js} +24 -70
- package/esm/tools/urlSearchParams.js.map +1 -0
- package/esm/tools/workerTimers.d.ts +5 -0
- package/{src/tools/workerTimers.ts → esm/tools/workerTimers.js} +7 -27
- package/esm/tools/workerTimers.js.map +1 -0
- package/esm/vendor/frontend/oidc-client-ts.d.ts +1 -0
- package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
- package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +1 -0
- package/esm/vendor/frontend/tsafe.js +1 -0
- package/esm/vendor/frontend/worker-timers.js +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -2
- package/index.js.map +1 -1
- package/keycloak/index.d.ts +3 -0
- package/keycloak/index.js +8 -0
- package/keycloak/index.js.map +1 -0
- package/keycloak/isKeycloak.d.ts +3 -0
- package/keycloak/isKeycloak.js +20 -0
- package/keycloak/isKeycloak.js.map +1 -0
- package/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/keycloak/keycloak-js/Keycloak.js +778 -0
- package/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/keycloak/keycloak-js/index.d.ts +2 -0
- package/keycloak/keycloak-js/index.js +6 -0
- package/keycloak/keycloak-js/index.js.map +1 -0
- package/keycloak/keycloak-js/types.d.ts +361 -0
- package/keycloak/keycloak-js/types.js +3 -0
- package/keycloak/keycloak-js/types.js.map +1 -0
- package/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
- package/keycloak/keycloakIssuerUriParsed.js +19 -0
- package/keycloak/keycloakIssuerUriParsed.js.map +1 -0
- package/keycloak/keycloakUtils.d.ts +37 -0
- package/keycloak/keycloakUtils.js +47 -0
- package/keycloak/keycloakUtils.js.map +1 -0
- package/keycloak-js.d.ts +1 -0
- package/keycloak-js.js +18 -0
- package/keycloak-js.js.map +1 -0
- package/mock/index.js.map +1 -1
- package/mock/oidc.js +147 -194
- package/mock/oidc.js.map +1 -1
- package/mock/react.js +2 -2
- package/mock/react.js.map +1 -1
- package/package.json +74 -299
- package/react/index.js.map +1 -1
- package/react/react.js +133 -244
- package/react/react.js.map +1 -1
- package/tools/Deferred.js +13 -35
- package/tools/Deferred.js.map +1 -1
- package/tools/EphemeralSessionStorage.js +46 -48
- package/tools/EphemeralSessionStorage.js.map +1 -1
- package/tools/Evt.js +14 -14
- package/tools/Evt.js.map +1 -1
- package/tools/StatefulEvt.js +5 -5
- package/tools/StatefulEvt.js.map +1 -1
- package/tools/ValueOrAsyncGetter.js.map +1 -1
- package/tools/asymmetricEncryption.js +81 -172
- package/tools/asymmetricEncryption.js.map +1 -1
- package/tools/base64.js +2 -2
- package/tools/base64.js.map +1 -1
- package/tools/createObjectThatThrowsIfAccessed.js +13 -61
- package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
- package/tools/decodeJwt.d.ts +25 -2
- package/tools/decodeJwt.js +61 -3
- package/tools/decodeJwt.js.map +1 -1
- package/tools/generateUrlSafeRandom.js +5 -30
- package/tools/generateUrlSafeRandom.js.map +1 -1
- package/tools/getDownlinkAndRtt.js +8 -30
- package/tools/getDownlinkAndRtt.js.map +1 -1
- package/tools/getIsOnline.js +3 -3
- package/tools/getIsOnline.js.map +1 -1
- package/tools/getIsValidRemoteJson.js +12 -59
- package/tools/getIsValidRemoteJson.js.map +1 -1
- package/tools/getPrUserInteraction.js +4 -4
- package/tools/getPrUserInteraction.js.map +1 -1
- package/tools/getUserEnvironmentInfo.js +17 -12
- package/tools/getUserEnvironmentInfo.js.map +1 -1
- package/tools/haveSharedParentDomain.js +5 -5
- package/tools/haveSharedParentDomain.js.map +1 -1
- package/tools/isDev.js +2 -2
- package/tools/isDev.js.map +1 -1
- package/tools/parseKeycloakIssuerUri.d.ts +2 -0
- package/tools/parseKeycloakIssuerUri.js +11 -42
- package/tools/parseKeycloakIssuerUri.js.map +1 -1
- package/tools/readExpirationTimeInJwt.js +4 -4
- package/tools/readExpirationTimeInJwt.js.map +1 -1
- package/tools/startCountdown.js +17 -65
- package/tools/startCountdown.js.map +1 -1
- package/tools/subscribeToUserInteraction.js +17 -66
- package/tools/subscribeToUserInteraction.js.map +1 -1
- package/tools/toFullyQualifiedUrl.js +7 -7
- package/tools/toFullyQualifiedUrl.js.map +1 -1
- package/tools/toHumanReadableDuration.js +13 -13
- package/tools/toHumanReadableDuration.js.map +1 -1
- package/tools/urlSearchParams.js +28 -50
- package/tools/urlSearchParams.js.map +1 -1
- package/tools/workerTimers.js +10 -10
- package/tools/workerTimers.js.map +1 -1
- package/vendor/frontend/oidc-client-ts.d.ts +1 -0
- package/vendor/frontend/oidc-client-ts.js +3686 -0
- package/vendor/frontend/tsafe.d.ts +1 -0
- package/vendor/frontend/tsafe.js +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -185
- package/core/trustedFetch.d.ts +0 -2
- package/core/trustedFetch.js +0 -12
- package/core/trustedFetch.js.map +0 -1
- package/src/backend.ts +0 -391
- package/src/core/Oidc.ts +0 -141
- package/src/core/StateData.ts +0 -118
- package/src/core/configId.ts +0 -3
- package/src/core/loginSilent.ts +0 -206
- package/src/core/oidcClientTsUserToTokens.ts +0 -229
- package/src/core/persistedAuthState.ts +0 -122
- package/src/core/trustedFetch.ts +0 -9
- package/src/index.ts +0 -7
- package/src/mock/react.tsx +0 -11
- package/src/react/react.tsx +0 -460
- package/src/tools/Deferred.ts +0 -39
- package/src/tools/StatefulEvt.ts +0 -38
- package/src/tools/asymmetricEncryption.ts +0 -184
- package/src/tools/decodeJwt.ts +0 -2
- package/src/tools/getIsValidRemoteJson.ts +0 -18
- package/src/tools/getUserEnvironmentInfo.ts +0 -42
- package/src/tools/parseKeycloakIssuerUri.ts +0 -68
- package/src/vendor/backend/evt.ts +0 -2
- package/src/vendor/backend/jsonwebtoken.ts +0 -1
- package/src/vendor/backend/node-fetch.ts +0 -2
- package/src/vendor/backend/node-jose.ts +0 -1
- package/src/vendor/backend/tsafe.ts +0 -5
- package/src/vendor/backend/zod.ts +0 -1
- package/src/vendor/frontend/oidc-client-ts-and-jwt-decode.ts +0 -4
- package/vendor/frontend/oidc-client-ts-and-jwt-decode.d.ts +0 -3
- package/vendor/frontend/oidc-client-ts-and-jwt-decode.js +0 -3
- /package/{src/mock/index.ts → esm/mock/index.d.ts} +0 -0
- /package/{src/react/index.ts → esm/react/index.d.ts} +0 -0
- /package/{src/tools/ValueOrAsyncGetter.ts → esm/tools/ValueOrAsyncGetter.d.ts} +0 -0
- /package/{src/vendor/frontend/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
|
@@ -1,58 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getStateData,
|
|
3
|
-
markStateDataAsProcessedByCallback,
|
|
4
|
-
getIsStatQueryParamValue,
|
|
5
|
-
type StateData
|
|
6
|
-
} from "./StateData";
|
|
1
|
+
import { getStateData, markStateDataAsProcessedByCallback, getIsStatQueryParamValue } from "./StateData";
|
|
7
2
|
import { assert, id } from "../vendor/frontend/tsafe";
|
|
8
|
-
import type { AuthResponse } from "./AuthResponse";
|
|
9
3
|
import { initialLocationHref } from "./initialLocationHref";
|
|
10
|
-
import { captureFetch } from "./trustedFetch";
|
|
11
4
|
import { encryptAuthResponse } from "./iframeMessageProtection";
|
|
12
|
-
|
|
13
|
-
captureFetch();
|
|
14
|
-
|
|
15
5
|
const globalContext = {
|
|
16
|
-
previousCall: id
|
|
6
|
+
previousCall: id(undefined)
|
|
17
7
|
};
|
|
18
|
-
|
|
19
|
-
export function handleOidcCallback(): { isHandled: boolean } {
|
|
8
|
+
export function handleOidcCallback() {
|
|
20
9
|
if (globalContext.previousCall !== undefined) {
|
|
21
10
|
return globalContext.previousCall;
|
|
22
11
|
}
|
|
23
|
-
|
|
24
12
|
return (globalContext.previousCall = handleOidcCallback_nonMemoized());
|
|
25
13
|
}
|
|
26
|
-
|
|
27
|
-
function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
14
|
+
function handleOidcCallback_nonMemoized() {
|
|
28
15
|
const location_urlObj = new URL(initialLocationHref);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
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 };
|
|
39
26
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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 };
|
|
48
42
|
}
|
|
49
|
-
|
|
50
|
-
return stateQueryParamValue;
|
|
43
|
+
return undefined;
|
|
51
44
|
})();
|
|
52
|
-
|
|
53
|
-
if (stateQueryParamValue === undefined) {
|
|
45
|
+
if (stateUrlParamValue_wrap === undefined) {
|
|
54
46
|
const backForwardTracker = readBackForwardTracker();
|
|
55
|
-
|
|
56
47
|
if (backForwardTracker !== undefined) {
|
|
57
48
|
writeBackForwardTracker({
|
|
58
49
|
backForwardTracker: {
|
|
@@ -61,34 +52,25 @@ function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
|
61
52
|
}
|
|
62
53
|
});
|
|
63
54
|
}
|
|
64
|
-
|
|
65
55
|
return { isHandled: false };
|
|
66
56
|
}
|
|
67
|
-
|
|
68
57
|
const isHandled = true;
|
|
69
|
-
|
|
70
|
-
console.log = () => {};
|
|
71
|
-
console.warn = () => {};
|
|
72
|
-
console.error = () => {};
|
|
73
|
-
console.debug = () => {};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
stateData === undefined ||
|
|
79
|
-
(stateData.context === "redirect" && stateData.hasBeenProcessedByCallback)
|
|
80
|
-
) {
|
|
81
|
-
const historyMethod: "back" | "forward" = (() => {
|
|
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 = (() => {
|
|
82
67
|
const backForwardTracker = readBackForwardTracker();
|
|
83
|
-
|
|
84
68
|
if (backForwardTracker === undefined) {
|
|
85
69
|
return "back";
|
|
86
70
|
}
|
|
87
|
-
|
|
88
71
|
if (!backForwardTracker.hasExitedCallback) {
|
|
89
72
|
return backForwardTracker.previousHistoryMethod;
|
|
90
73
|
}
|
|
91
|
-
|
|
92
74
|
switch (backForwardTracker.previousHistoryMethod) {
|
|
93
75
|
case "back":
|
|
94
76
|
return "forward";
|
|
@@ -96,19 +78,15 @@ function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
|
96
78
|
return "back";
|
|
97
79
|
}
|
|
98
80
|
})();
|
|
99
|
-
|
|
100
81
|
writeBackForwardTracker({
|
|
101
82
|
backForwardTracker: {
|
|
102
83
|
previousHistoryMethod: historyMethod,
|
|
103
84
|
hasExitedCallback: false
|
|
104
85
|
}
|
|
105
86
|
});
|
|
106
|
-
|
|
107
87
|
setTimeout(() => {
|
|
108
88
|
reloadOnBfCacheNavigation();
|
|
109
|
-
|
|
110
89
|
window.history[historyMethod]();
|
|
111
|
-
|
|
112
90
|
// NOTE: This is a "better than nothing" approach.
|
|
113
91
|
// Under some circumstances it's possible to get stuck on this url
|
|
114
92
|
// if there is no "next" page in the history for example, navigating
|
|
@@ -119,18 +97,15 @@ function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
|
119
97
|
window.location.href = `${protocol}//${host}${pathname}${hash}`;
|
|
120
98
|
}, 350);
|
|
121
99
|
}, 0);
|
|
122
|
-
|
|
123
100
|
return { isHandled };
|
|
124
101
|
}
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
102
|
+
const authResponse = { state: "" };
|
|
103
|
+
for (const [key, value] of isFragment
|
|
104
|
+
? new URLSearchParams(location_urlObj.hash.replace(/^#/, ""))
|
|
105
|
+
: location_urlObj.searchParams) {
|
|
129
106
|
authResponse[key] = value;
|
|
130
107
|
}
|
|
131
|
-
|
|
132
108
|
assert(authResponse.state !== "", "063965");
|
|
133
|
-
|
|
134
109
|
switch (stateData.context) {
|
|
135
110
|
case "iframe":
|
|
136
111
|
encryptAuthResponse({
|
|
@@ -138,7 +113,7 @@ function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
|
138
113
|
}).then(({ encryptedMessage }) => parent.postMessage(encryptedMessage, location.origin));
|
|
139
114
|
break;
|
|
140
115
|
case "redirect":
|
|
141
|
-
markStateDataAsProcessedByCallback({
|
|
116
|
+
markStateDataAsProcessedByCallback({ stateUrlParamValue });
|
|
142
117
|
clearBackForwardTracker();
|
|
143
118
|
writeRedirectAuthResponses({
|
|
144
119
|
authResponses: [...readRedirectAuthResponses(), authResponse]
|
|
@@ -149,27 +124,17 @@ function handleOidcCallback_nonMemoized(): { isHandled: boolean } {
|
|
|
149
124
|
if (stateData.action === "login" && authResponse.error === "consent_required") {
|
|
150
125
|
return stateData.redirectUrl_consentRequiredCase;
|
|
151
126
|
}
|
|
152
|
-
|
|
153
127
|
return stateData.redirectUrl;
|
|
154
128
|
})();
|
|
155
|
-
|
|
156
129
|
location.href = href;
|
|
157
130
|
}, 0);
|
|
158
131
|
break;
|
|
159
132
|
}
|
|
160
|
-
|
|
161
133
|
return { isHandled };
|
|
162
134
|
}
|
|
163
|
-
|
|
164
|
-
const {
|
|
165
|
-
readRedirectAuthResponses,
|
|
166
|
-
writeRedirectAuthResponses,
|
|
167
|
-
moveRedirectAuthResponseFromSessionStorageToMemory
|
|
168
|
-
} = (() => {
|
|
135
|
+
const { readRedirectAuthResponses, writeRedirectAuthResponses, moveRedirectAuthResponseFromSessionStorageToMemory } = (() => {
|
|
169
136
|
const AUTH_RESPONSES_KEY = "oidc-spa:authResponses";
|
|
170
|
-
|
|
171
|
-
let authResponses_movedToMemoryFromSessionStorage: AuthResponse[] | undefined = undefined;
|
|
172
|
-
|
|
137
|
+
let authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
173
138
|
// NOTE: Here we note that we can re-write on session storage some auth response
|
|
174
139
|
// after earlyInit in retrieveRedirectAuthResponseAndStateData
|
|
175
140
|
// In situation where there are more than one client in the same app and we can't use iframe,
|
|
@@ -177,124 +142,84 @@ const {
|
|
|
177
142
|
// In most case it won't happen if the init sequence is deterministic but the client
|
|
178
143
|
// can be instantiated at any time really.
|
|
179
144
|
// So the move to memory of the response is fully effective only when theres one client.
|
|
180
|
-
function writeRedirectAuthResponses(params
|
|
145
|
+
function writeRedirectAuthResponses(params) {
|
|
181
146
|
const { authResponses } = params;
|
|
182
|
-
|
|
183
147
|
authResponses_movedToMemoryFromSessionStorage = undefined;
|
|
184
|
-
|
|
185
148
|
if (authResponses.length === 0) {
|
|
186
149
|
sessionStorage.removeItem(AUTH_RESPONSES_KEY);
|
|
187
150
|
return;
|
|
188
151
|
}
|
|
189
152
|
sessionStorage.setItem(AUTH_RESPONSES_KEY, JSON.stringify(authResponses));
|
|
190
153
|
}
|
|
191
|
-
|
|
192
|
-
function readRedirectAuthResponses(): AuthResponse[] {
|
|
154
|
+
function readRedirectAuthResponses() {
|
|
193
155
|
if (authResponses_movedToMemoryFromSessionStorage !== undefined) {
|
|
194
156
|
return authResponses_movedToMemoryFromSessionStorage;
|
|
195
157
|
}
|
|
196
|
-
|
|
197
158
|
const raw = sessionStorage.getItem(AUTH_RESPONSES_KEY);
|
|
198
|
-
|
|
199
159
|
if (raw === null) {
|
|
200
160
|
return [];
|
|
201
161
|
}
|
|
202
|
-
|
|
203
162
|
return JSON.parse(raw);
|
|
204
163
|
}
|
|
205
|
-
|
|
206
164
|
function moveRedirectAuthResponseFromSessionStorageToMemory() {
|
|
207
165
|
const authResponses = readRedirectAuthResponses();
|
|
208
|
-
|
|
209
166
|
writeRedirectAuthResponses({ authResponses: [] });
|
|
210
|
-
|
|
211
167
|
authResponses_movedToMemoryFromSessionStorage = authResponses;
|
|
212
168
|
}
|
|
213
|
-
|
|
214
169
|
return {
|
|
215
170
|
writeRedirectAuthResponses,
|
|
216
171
|
readRedirectAuthResponses,
|
|
217
172
|
moveRedirectAuthResponseFromSessionStorageToMemory
|
|
218
173
|
};
|
|
219
174
|
})();
|
|
220
|
-
|
|
221
175
|
export { moveRedirectAuthResponseFromSessionStorageToMemory };
|
|
222
|
-
|
|
223
|
-
export function retrieveRedirectAuthResponseAndStateData(params: {
|
|
224
|
-
configId: string;
|
|
225
|
-
}): { authResponse: AuthResponse; stateData: StateData.Redirect } | undefined {
|
|
176
|
+
export function retrieveRedirectAuthResponseAndStateData(params) {
|
|
226
177
|
const { configId } = params;
|
|
227
|
-
|
|
228
178
|
const authResponses = readRedirectAuthResponses();
|
|
229
|
-
|
|
230
|
-
let authResponseAndStateData:
|
|
231
|
-
| { authResponse: AuthResponse; stateData: StateData.Redirect }
|
|
232
|
-
| undefined = undefined;
|
|
233
|
-
|
|
179
|
+
let authResponseAndStateData = undefined;
|
|
234
180
|
for (const authResponse of [...authResponses]) {
|
|
235
|
-
const stateData = getStateData({
|
|
236
|
-
|
|
181
|
+
const stateData = getStateData({ stateUrlParamValue: authResponse.state });
|
|
237
182
|
if (stateData === undefined) {
|
|
238
183
|
// NOTE: We do not understand how this can happen but it can.
|
|
239
184
|
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
240
185
|
continue;
|
|
241
186
|
}
|
|
242
|
-
|
|
243
187
|
assert(stateData.context === "redirect", "474728");
|
|
244
|
-
|
|
245
188
|
if (stateData.configId !== configId) {
|
|
246
189
|
continue;
|
|
247
190
|
}
|
|
248
|
-
|
|
249
191
|
authResponses.splice(authResponses.indexOf(authResponse), 1);
|
|
250
|
-
|
|
251
192
|
authResponseAndStateData = { authResponse, stateData };
|
|
252
193
|
}
|
|
253
|
-
|
|
254
194
|
writeRedirectAuthResponses({ authResponses });
|
|
255
|
-
|
|
256
195
|
return authResponseAndStateData;
|
|
257
196
|
}
|
|
258
|
-
|
|
259
197
|
function reloadOnBfCacheNavigation() {
|
|
260
198
|
const start = Date.now();
|
|
261
199
|
window.addEventListener("pageshow", () => {
|
|
262
200
|
const elapsed = Date.now() - start;
|
|
263
|
-
|
|
264
201
|
if (elapsed < 100) {
|
|
265
202
|
return;
|
|
266
203
|
}
|
|
267
204
|
location.reload();
|
|
268
205
|
});
|
|
269
206
|
}
|
|
270
|
-
|
|
271
207
|
const { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker } = (() => {
|
|
272
208
|
const BACK_NAVIGATION_TRACKER_KEY = "oidc-spa:callback-back-forward-tracker";
|
|
273
|
-
|
|
274
|
-
type BackForwardTracker = {
|
|
275
|
-
previousHistoryMethod: "back" | "forward";
|
|
276
|
-
hasExitedCallback: boolean;
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
function writeBackForwardTracker(params: { backForwardTracker: BackForwardTracker }): void {
|
|
209
|
+
function writeBackForwardTracker(params) {
|
|
280
210
|
const { backForwardTracker } = params;
|
|
281
|
-
|
|
282
211
|
sessionStorage.setItem(BACK_NAVIGATION_TRACKER_KEY, JSON.stringify(backForwardTracker));
|
|
283
212
|
}
|
|
284
|
-
|
|
285
|
-
function readBackForwardTracker(): BackForwardTracker | undefined {
|
|
213
|
+
function readBackForwardTracker() {
|
|
286
214
|
const raw = sessionStorage.getItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
287
|
-
|
|
288
215
|
if (raw === null) {
|
|
289
216
|
return undefined;
|
|
290
217
|
}
|
|
291
|
-
|
|
292
218
|
return JSON.parse(raw);
|
|
293
219
|
}
|
|
294
|
-
|
|
295
|
-
function clearBackForwardTracker(): void {
|
|
220
|
+
function clearBackForwardTracker() {
|
|
296
221
|
sessionStorage.removeItem(BACK_NAVIGATION_TRACKER_KEY);
|
|
297
222
|
}
|
|
298
|
-
|
|
299
223
|
return { writeBackForwardTracker, readBackForwardTracker, clearBackForwardTracker };
|
|
300
224
|
})();
|
|
225
|
+
//# sourceMappingURL=handleOidcCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleOidcCallback.js","sourceRoot":"","sources":["../../../src/core/handleOidcCallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type AuthResponse } from "./AuthResponse";
|
|
2
|
+
export declare function preventSessionStorageSetItemOfPublicKeyByThirdParty(): void;
|
|
3
|
+
export declare function initIframeMessageProtection(params: {
|
|
4
|
+
stateUrlParamValue: string;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
getIsEncryptedAuthResponse: (params: {
|
|
7
|
+
message: unknown;
|
|
8
|
+
}) => boolean;
|
|
9
|
+
decodeEncryptedAuth: (params: {
|
|
10
|
+
encryptedAuthResponse: string;
|
|
11
|
+
}) => Promise<{
|
|
12
|
+
authResponse: AuthResponse;
|
|
13
|
+
}>;
|
|
14
|
+
clearSessionStoragePublicKey: () => void;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function encryptAuthResponse(params: {
|
|
17
|
+
authResponse: AuthResponse;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
encryptedMessage: string;
|
|
20
|
+
}>;
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
import { assert } from "../vendor/frontend/tsafe";
|
|
2
2
|
import { asymmetricEncrypt, asymmetricDecrypt, generateKeys } from "../tools/asymmetricEncryption";
|
|
3
|
-
import { type AuthResponse } from "./AuthResponse";
|
|
4
|
-
|
|
5
3
|
const sessionStorage_original = window.sessionStorage;
|
|
6
4
|
const setItem_real = Storage.prototype.setItem;
|
|
7
|
-
|
|
8
5
|
const SESSION_STORAGE_PREFIX = "oidc-spa_iframe_authResponse_publicKey_";
|
|
9
|
-
|
|
10
6
|
export function preventSessionStorageSetItemOfPublicKeyByThirdParty() {
|
|
11
|
-
const setItem_protected = function setItem(
|
|
7
|
+
const setItem_protected = function setItem(key, value) {
|
|
12
8
|
if (this !== sessionStorage_original) {
|
|
13
9
|
return setItem_real.call(this, key, value);
|
|
14
10
|
}
|
|
15
|
-
|
|
16
11
|
if (key.startsWith(SESSION_STORAGE_PREFIX)) {
|
|
17
|
-
throw new Error(
|
|
18
|
-
"Attack prevented by oidc-spa. You have malicious code running in your system"
|
|
19
|
-
);
|
|
12
|
+
throw new Error("Attack prevented by oidc-spa. You have malicious code running in your system");
|
|
20
13
|
}
|
|
21
|
-
|
|
22
14
|
return setItem_real.call(sessionStorage_original, key, value);
|
|
23
15
|
};
|
|
24
|
-
|
|
25
16
|
{
|
|
26
17
|
const pd = Object.getOwnPropertyDescriptor(Storage.prototype, "setItem");
|
|
27
|
-
|
|
28
18
|
assert(pd !== undefined);
|
|
29
|
-
|
|
30
19
|
Object.defineProperty(Storage.prototype, "setItem", {
|
|
31
20
|
enumerable: pd.enumerable,
|
|
32
21
|
writable: pd.writable,
|
|
@@ -34,67 +23,43 @@ export function preventSessionStorageSetItemOfPublicKeyByThirdParty() {
|
|
|
34
23
|
});
|
|
35
24
|
}
|
|
36
25
|
}
|
|
37
|
-
|
|
38
26
|
const ENCRYPTED_AUTH_RESPONSES_PREFIX = "oidc-spa_encrypted_authResponse_";
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return `${SESSION_STORAGE_PREFIX}${stateQueryParamValue}`;
|
|
27
|
+
function getSessionStorageKey(params) {
|
|
28
|
+
const { stateUrlParamValue } = params;
|
|
29
|
+
return `${SESSION_STORAGE_PREFIX}${stateUrlParamValue}`;
|
|
44
30
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const { stateQueryParamValue } = params;
|
|
48
|
-
|
|
31
|
+
export async function initIframeMessageProtection(params) {
|
|
32
|
+
const { stateUrlParamValue } = params;
|
|
49
33
|
const { publicKey, privateKey } = await generateKeys();
|
|
50
|
-
|
|
51
|
-
const sessionStorageKey = getSessionStorageKey({ stateQueryParamValue });
|
|
52
|
-
|
|
34
|
+
const sessionStorageKey = getSessionStorageKey({ stateUrlParamValue });
|
|
53
35
|
setItem_real.call(sessionStorage, sessionStorageKey, publicKey);
|
|
54
|
-
|
|
55
|
-
function getIsEncryptedAuthResponse(params: { message: unknown }): boolean {
|
|
36
|
+
function getIsEncryptedAuthResponse(params) {
|
|
56
37
|
const { message } = params;
|
|
57
|
-
|
|
58
38
|
return typeof message === "string" && message.startsWith(ENCRYPTED_AUTH_RESPONSES_PREFIX);
|
|
59
39
|
}
|
|
60
|
-
|
|
61
|
-
async function decodeEncryptedAuth(params: {
|
|
62
|
-
encryptedAuthResponse: string;
|
|
63
|
-
}): Promise<{ authResponse: AuthResponse }> {
|
|
40
|
+
async function decodeEncryptedAuth(params) {
|
|
64
41
|
const { encryptedAuthResponse } = params;
|
|
65
|
-
|
|
66
42
|
const { message: authResponse_str } = await asymmetricDecrypt({
|
|
67
43
|
encryptedMessage: encryptedAuthResponse.slice(ENCRYPTED_AUTH_RESPONSES_PREFIX.length),
|
|
68
44
|
privateKey
|
|
69
45
|
});
|
|
70
|
-
|
|
71
|
-
const authResponse: AuthResponse = JSON.parse(authResponse_str);
|
|
72
|
-
|
|
46
|
+
const authResponse = JSON.parse(authResponse_str);
|
|
73
47
|
return { authResponse };
|
|
74
48
|
}
|
|
75
|
-
|
|
76
49
|
function clearSessionStoragePublicKey() {
|
|
77
50
|
sessionStorage.removeItem(sessionStorageKey);
|
|
78
51
|
}
|
|
79
|
-
|
|
80
52
|
return { getIsEncryptedAuthResponse, decodeEncryptedAuth, clearSessionStoragePublicKey };
|
|
81
53
|
}
|
|
82
|
-
|
|
83
|
-
export async function encryptAuthResponse(params: { authResponse: AuthResponse }) {
|
|
54
|
+
export async function encryptAuthResponse(params) {
|
|
84
55
|
const { authResponse } = params;
|
|
85
|
-
|
|
86
|
-
const publicKey = sessionStorage.getItem(
|
|
87
|
-
getSessionStorageKey({ stateQueryParamValue: authResponse.state })
|
|
88
|
-
);
|
|
89
|
-
|
|
56
|
+
const publicKey = sessionStorage.getItem(getSessionStorageKey({ stateUrlParamValue: authResponse.state }));
|
|
90
57
|
assert(publicKey !== null, "2293302");
|
|
91
|
-
|
|
92
58
|
const { encryptedMessage: encryptedMessage_withoutPrefix } = await asymmetricEncrypt({
|
|
93
59
|
publicKey,
|
|
94
60
|
message: JSON.stringify(authResponse)
|
|
95
61
|
});
|
|
96
|
-
|
|
97
62
|
const encryptedMessage = `${ENCRYPTED_AUTH_RESPONSES_PREFIX}${encryptedMessage_withoutPrefix}`;
|
|
98
|
-
|
|
99
63
|
return { encryptedMessage };
|
|
100
64
|
}
|
|
65
|
+
//# sourceMappingURL=iframeMessageProtection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframeMessageProtection.js","sourceRoot":"","sources":["../../../src/core/iframeMessageProtection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type { Oidc } from "./Oidc";
|
|
2
2
|
export { createOidc, type ParamsOfCreateOidc } from "./createOidc";
|
|
3
3
|
export { OidcInitializationError } from "./OidcInitializationError";
|
|
4
|
-
export {
|
|
4
|
+
export { handleOidcCallback } from "./handleOidcCallback";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA2B,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const initialLocationHref: string;
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NonPostableEvt } from "../tools/Evt";
|
|
2
|
+
export declare function createGetIsNewBrowserSession(params: {
|
|
3
|
+
configId: string;
|
|
4
|
+
evtUserNotLoggedIn: NonPostableEvt<void>;
|
|
5
|
+
}): {
|
|
6
|
+
getIsNewBrowserSession: (params: {
|
|
7
|
+
subjectId: string;
|
|
8
|
+
}) => boolean;
|
|
9
|
+
};
|
|
@@ -1,37 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function createGetIsNewBrowserSession(params: {
|
|
4
|
-
configId: string;
|
|
5
|
-
evtUserNotLoggedIn: NonPostableEvt<void>;
|
|
6
|
-
}) {
|
|
1
|
+
export function createGetIsNewBrowserSession(params) {
|
|
7
2
|
const { configId, evtUserNotLoggedIn } = params;
|
|
8
|
-
|
|
9
3
|
const SESSION_STORAGE_KEY = `oidc-spa.subject-id:${configId}`;
|
|
10
|
-
|
|
11
4
|
{
|
|
12
5
|
const { unsubscribe } = evtUserNotLoggedIn.subscribe(() => {
|
|
13
6
|
unsubscribe();
|
|
14
7
|
sessionStorage.removeItem(SESSION_STORAGE_KEY);
|
|
15
8
|
});
|
|
16
9
|
}
|
|
17
|
-
|
|
18
|
-
function getIsNewBrowserSession(params: { subjectId: string }): boolean {
|
|
10
|
+
function getIsNewBrowserSession(params) {
|
|
19
11
|
const { subjectId } = params;
|
|
20
|
-
|
|
21
12
|
const subjectId_sessionStorage = sessionStorage.getItem(SESSION_STORAGE_KEY);
|
|
22
|
-
|
|
23
13
|
if (subjectId_sessionStorage === null) {
|
|
24
14
|
sessionStorage.setItem(SESSION_STORAGE_KEY, subjectId);
|
|
25
15
|
return true;
|
|
26
16
|
}
|
|
27
|
-
|
|
28
17
|
if (subjectId !== subjectId_sessionStorage) {
|
|
29
18
|
sessionStorage.setItem(SESSION_STORAGE_KEY, subjectId);
|
|
30
19
|
return true;
|
|
31
20
|
}
|
|
32
|
-
|
|
33
21
|
return false;
|
|
34
22
|
}
|
|
35
|
-
|
|
36
23
|
return { getIsNewBrowserSession };
|
|
37
24
|
}
|
|
25
|
+
//# sourceMappingURL=isNewBrowserSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isNewBrowserSession.js","sourceRoot":"","sources":["../../../src/core/isNewBrowserSession.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAAC,MAG5C;IACG,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IAEhD,MAAM,mBAAmB,GAAG,uBAAuB,QAAQ,EAAE,CAAC;IAE9D,CAAC;QACG,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE;YACtD,WAAW,EAAE,CAAC;YACd,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,sBAAsB,CAAC,MAA6B;QACzD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE7B,MAAM,wBAAwB,GAAG,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE7E,IAAI,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,SAAS,KAAK,wBAAwB,EAAE,CAAC;YACzC,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { UserManager as OidcClientTsUserManager } from "../vendor/frontend/oidc-client-ts";
|
|
2
|
+
import type { NonPostableEvt } from "../tools/Evt";
|
|
3
|
+
type Params = Params.Login | Params.GoToAuthServer;
|
|
4
|
+
declare namespace Params {
|
|
5
|
+
type Common = {
|
|
6
|
+
redirectUrl: string;
|
|
7
|
+
extraQueryParams_local: Record<string, string | undefined> | undefined;
|
|
8
|
+
transformUrlBeforeRedirect_local: ((url: string) => string) | undefined;
|
|
9
|
+
};
|
|
10
|
+
export type Login = Common & {
|
|
11
|
+
action: "login";
|
|
12
|
+
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: boolean;
|
|
13
|
+
doForceReloadOnBfCache: boolean;
|
|
14
|
+
interaction: "ensure no interaction" | "ensure interaction" | "directly redirect if active session show login otherwise";
|
|
15
|
+
};
|
|
16
|
+
export type GoToAuthServer = Common & {
|
|
17
|
+
action: "go to auth server";
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
20
|
+
}
|
|
21
|
+
export declare function getPrSafelyRestoredFromBfCacheAfterLoginBackNavigation(): Promise<void>;
|
|
22
|
+
export declare function createLoginOrGoToAuthServer(params: {
|
|
23
|
+
configId: string;
|
|
24
|
+
oidcClientTsUserManager: OidcClientTsUserManager;
|
|
25
|
+
transformUrlBeforeRedirect: ((params: {
|
|
26
|
+
authorizationUrl: string;
|
|
27
|
+
isSilent: boolean;
|
|
28
|
+
}) => string) | undefined;
|
|
29
|
+
getExtraQueryParams: ((params: {
|
|
30
|
+
isSilent: boolean;
|
|
31
|
+
url: string;
|
|
32
|
+
}) => Record<string, string | undefined>) | undefined;
|
|
33
|
+
getExtraTokenParams: (() => Record<string, string | undefined>) | undefined;
|
|
34
|
+
homeUrl: string;
|
|
35
|
+
evtIsUserLoggedIn: NonPostableEvt<boolean>;
|
|
36
|
+
log: typeof console.log | undefined;
|
|
37
|
+
}): {
|
|
38
|
+
loginOrGoToAuthServer: (params: Params) => Promise<never>;
|
|
39
|
+
};
|
|
40
|
+
export {};
|