@okta/okta-auth-js 7.0.1 → 7.1.0
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 +2 -0
- package/cjs/authn/AuthnTransactionImpl.js +6 -8
- package/cjs/authn/AuthnTransactionImpl.js.map +1 -1
- package/cjs/authn/api.js +3 -18
- package/cjs/authn/api.js.map +1 -1
- package/cjs/authn/factory.js +1 -7
- package/cjs/authn/factory.js.map +1 -1
- package/cjs/authn/index.js +0 -5
- package/cjs/authn/index.js.map +1 -1
- package/cjs/authn/mixin.js +14 -22
- package/cjs/authn/mixin.js.map +1 -1
- package/cjs/authn/util/flattenEmbedded.js +5 -12
- package/cjs/authn/util/flattenEmbedded.js.map +1 -1
- package/cjs/authn/util/link2fn.js +0 -22
- package/cjs/authn/util/link2fn.js.map +1 -1
- package/cjs/authn/util/links2fns.js +0 -12
- package/cjs/authn/util/links2fns.js.map +1 -1
- package/cjs/authn/util/poll.js +9 -27
- package/cjs/authn/util/poll.js.map +1 -1
- package/cjs/authn/util/stateToken.js +3 -4
- package/cjs/authn/util/stateToken.js.map +1 -1
- package/cjs/base/factory.js +6 -14
- package/cjs/base/factory.js.map +1 -1
- package/cjs/base/index.js +0 -5
- package/cjs/base/index.js.map +1 -1
- package/cjs/base/options.js +1 -2
- package/cjs/base/options.js.map +1 -1
- package/cjs/browser/browserStorage.js +15 -43
- package/cjs/browser/browserStorage.js.map +1 -1
- package/cjs/browser/fingerprint.js +3 -15
- package/cjs/browser/fingerprint.js.map +1 -1
- package/cjs/clock.js +5 -7
- package/cjs/clock.js.map +1 -1
- package/cjs/constants.js +4 -3
- package/cjs/constants.js.map +1 -1
- package/cjs/core/AuthStateManager.js +24 -48
- package/cjs/core/AuthStateManager.js.map +1 -1
- package/cjs/core/ServiceManager/browser.js +13 -33
- package/cjs/core/ServiceManager/browser.js.map +1 -1
- package/cjs/core/ServiceManager/index.js +0 -1
- package/cjs/core/ServiceManager/index.js.map +1 -1
- package/cjs/core/ServiceManager/node.js +3 -9
- package/cjs/core/ServiceManager/node.js.map +1 -1
- package/cjs/core/factory.js +0 -7
- package/cjs/core/factory.js.map +1 -1
- package/cjs/core/index.js +0 -13
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/mixin.js +16 -20
- package/cjs/core/mixin.js.map +1 -1
- package/cjs/core/options.js +1 -3
- package/cjs/core/options.js.map +1 -1
- package/cjs/core/storage.js +0 -2
- package/cjs/core/storage.js.map +1 -1
- package/cjs/core/types/index.js +0 -5
- package/cjs/core/types/index.js.map +1 -1
- package/cjs/crypto/base64.js +9 -22
- package/cjs/crypto/base64.js.map +1 -1
- package/cjs/crypto/browser.js +0 -4
- package/cjs/crypto/browser.js.map +1 -1
- package/cjs/crypto/index.js +0 -9
- package/cjs/crypto/index.js.map +1 -1
- package/cjs/crypto/node.js +0 -13
- package/cjs/crypto/node.js.map +1 -1
- package/cjs/crypto/oidcHash.js +1 -4
- package/cjs/crypto/oidcHash.js.map +1 -1
- package/cjs/crypto/verifyToken.js +6 -7
- package/cjs/crypto/verifyToken.js.map +1 -1
- package/cjs/crypto/webcrypto.js +0 -1
- package/cjs/crypto/webcrypto.js.map +1 -1
- package/cjs/errors/AuthApiError.js +1 -7
- package/cjs/errors/AuthApiError.js.map +1 -1
- package/cjs/errors/AuthPollStopError.js +1 -5
- package/cjs/errors/AuthPollStopError.js.map +1 -1
- package/cjs/errors/AuthSdkError.js +1 -6
- package/cjs/errors/AuthSdkError.js.map +1 -1
- package/cjs/errors/CustomError.js +1 -4
- package/cjs/errors/CustomError.js.map +1 -1
- package/cjs/errors/OAuthError.js +4 -7
- package/cjs/errors/OAuthError.js.map +1 -1
- package/cjs/errors/index.js +1 -9
- package/cjs/errors/index.js.map +1 -1
- package/cjs/exports/authn.js +0 -9
- package/cjs/exports/authn.js.map +1 -1
- package/cjs/exports/cdn/authn.js +0 -2
- package/cjs/exports/cdn/authn.js.map +1 -1
- package/cjs/exports/cdn/core.js +0 -2
- package/cjs/exports/cdn/core.js.map +1 -1
- package/cjs/exports/cdn/default.js +0 -2
- package/cjs/exports/cdn/default.js.map +1 -1
- package/cjs/exports/cdn/idx.js +0 -2
- package/cjs/exports/cdn/idx.js.map +1 -1
- package/cjs/exports/cdn/myaccount.js +0 -2
- package/cjs/exports/cdn/myaccount.js.map +1 -1
- package/cjs/exports/common.js +0 -22
- package/cjs/exports/common.js.map +1 -1
- package/cjs/exports/core.js +0 -9
- package/cjs/exports/core.js.map +1 -1
- package/cjs/exports/default.js +2 -12
- package/cjs/exports/default.js.map +1 -1
- package/cjs/exports/idx.js +3 -7
- package/cjs/exports/idx.js.map +1 -1
- package/cjs/exports/myaccount.js +0 -9
- package/cjs/exports/myaccount.js.map +1 -1
- package/cjs/features.js +1 -18
- package/cjs/features.js.map +1 -1
- package/cjs/fetch/fetchRequest.js +6 -20
- package/cjs/fetch/fetchRequest.js.map +1 -1
- package/cjs/http/OktaUserAgent.js +3 -11
- package/cjs/http/OktaUserAgent.js.map +1 -1
- package/cjs/http/headers.js +1 -1
- package/cjs/http/headers.js.map +1 -1
- package/cjs/http/index.js +0 -11
- package/cjs/http/index.js.map +1 -1
- package/cjs/http/mixin.js +2 -10
- package/cjs/http/mixin.js.map +1 -1
- package/cjs/http/options.js +1 -5
- package/cjs/http/options.js.map +1 -1
- package/cjs/http/request.js +75 -57
- package/cjs/http/request.js.map +1 -1
- package/cjs/idx/IdxTransactionManager.js +2 -22
- package/cjs/idx/IdxTransactionManager.js.map +1 -1
- package/cjs/idx/authenticate.js +3 -5
- package/cjs/idx/authenticate.js.map +1 -1
- package/cjs/idx/authenticator/Authenticator.js +2 -4
- package/cjs/idx/authenticator/Authenticator.js.map +1 -1
- package/cjs/idx/authenticator/OktaPassword.js +2 -10
- package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
- package/cjs/idx/authenticator/OktaVerifyTotp.js +0 -6
- package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +0 -10
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionVerification.js +1 -10
- package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +2 -10
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnEnrollment.js +0 -8
- package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnVerification.js +0 -8
- package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -1
- package/cjs/idx/authenticator/getAuthenticator.js +0 -15
- package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/index.js +0 -15
- package/cjs/idx/authenticator/index.js.map +1 -1
- package/cjs/idx/authenticator/util.js +8 -18
- package/cjs/idx/authenticator/util.js.map +1 -1
- package/cjs/idx/cancel.js +3 -4
- package/cjs/idx/cancel.js.map +1 -1
- package/cjs/idx/emailVerify.js +5 -13
- package/cjs/idx/emailVerify.js.map +1 -1
- package/cjs/idx/factory/OktaAuthIdx.js +0 -3
- package/cjs/idx/factory/OktaAuthIdx.js.map +1 -1
- package/cjs/idx/factory/api.js +1 -17
- package/cjs/idx/factory/api.js.map +1 -1
- package/cjs/idx/factory/index.js +0 -3
- package/cjs/idx/factory/index.js.map +1 -1
- package/cjs/idx/flow/AccountUnlockFlow.js +1 -2
- package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -1
- package/cjs/idx/flow/AuthenticationFlow.js +1 -2
- package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
- package/cjs/idx/flow/FlowSpecification.js +2 -13
- package/cjs/idx/flow/FlowSpecification.js.map +1 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js +1 -2
- package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
- package/cjs/idx/flow/RegistrationFlow.js +1 -2
- package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
- package/cjs/idx/flow/index.js +0 -11
- package/cjs/idx/flow/index.js.map +1 -1
- package/cjs/idx/handleInteractionCodeRedirect.js +7 -12
- package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
- package/cjs/idx/idxState/index.js +1 -11
- package/cjs/idx/idxState/index.js.map +1 -1
- package/cjs/idx/idxState/v1/actionParser.js +1 -12
- package/cjs/idx/idxState/v1/actionParser.js.map +1 -1
- package/cjs/idx/idxState/v1/generateIdxAction.js +10 -15
- package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
- package/cjs/idx/idxState/v1/idxResponseParser.js +7 -23
- package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
- package/cjs/idx/idxState/v1/makeIdxState.js +2 -10
- package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
- package/cjs/idx/idxState/v1/parsers.js +0 -2
- package/cjs/idx/idxState/v1/parsers.js.map +1 -1
- package/cjs/idx/idxState/v1/remediationParser.js +2 -4
- package/cjs/idx/idxState/v1/remediationParser.js.map +1 -1
- package/cjs/idx/index.js +0 -26
- package/cjs/idx/index.js.map +1 -1
- package/cjs/idx/interact.js +18 -18
- package/cjs/idx/interact.js.map +1 -1
- package/cjs/idx/introspect.js +5 -14
- package/cjs/idx/introspect.js.map +1 -1
- package/cjs/idx/mixin.js +0 -9
- package/cjs/idx/mixin.js.map +1 -1
- package/cjs/idx/options.js +2 -3
- package/cjs/idx/options.js.map +1 -1
- package/cjs/idx/poll.js +1 -10
- package/cjs/idx/poll.js.map +1 -1
- package/cjs/idx/proceed.js +3 -9
- package/cjs/idx/proceed.js.map +1 -1
- package/cjs/idx/recoverPassword.js +3 -4
- package/cjs/idx/recoverPassword.js.map +1 -1
- package/cjs/idx/register.js +5 -11
- package/cjs/idx/register.js.map +1 -1
- package/cjs/idx/remediate.js +24 -45
- package/cjs/idx/remediate.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +7 -16
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorVerificationData.js +7 -15
- package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -22
- package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
- package/cjs/idx/remediators/Base/Remediator.js +38 -67
- package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
- package/cjs/idx/remediators/Base/SelectAuthenticator.js +13 -30
- package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js +5 -13
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengeAuthenticator.js +1 -5
- package/cjs/idx/remediators/ChallengeAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengePoll.js +1 -6
- package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollAuthenticator.js +1 -5
- package/cjs/idx/remediators/EnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/EnrollPoll.js +5 -12
- package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollProfile.js +8 -30
- package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/EnrollmentChannelData.js +5 -13
- package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +13 -19
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/index.js +0 -1
- package/cjs/idx/remediators/GenericRemediator/index.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/util.js +19 -31
- package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
- package/cjs/idx/remediators/Identify.js +3 -12
- package/cjs/idx/remediators/Identify.js.map +1 -1
- package/cjs/idx/remediators/ReEnrollAuthenticator.js +3 -10
- package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/RedirectIdp.js +1 -7
- package/cjs/idx/remediators/RedirectIdp.js.map +1 -1
- package/cjs/idx/remediators/ResetAuthenticator.js +1 -5
- package/cjs/idx/remediators/ResetAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +3 -11
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +1 -5
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +6 -15
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollProfile.js +1 -6
- package/cjs/idx/remediators/SelectEnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollmentChannel.js +5 -16
- package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
- package/cjs/idx/remediators/Skip.js +1 -6
- package/cjs/idx/remediators/Skip.js.map +1 -1
- package/cjs/idx/remediators/index.js +0 -39
- package/cjs/idx/remediators/index.js.map +1 -1
- package/cjs/idx/remediators/util.js +1 -7
- package/cjs/idx/remediators/util.js.map +1 -1
- package/cjs/idx/run.js +37 -52
- package/cjs/idx/run.js.map +1 -1
- package/cjs/idx/startTransaction.js +1 -2
- package/cjs/idx/startTransaction.js.map +1 -1
- package/cjs/idx/storage.js +3 -22
- package/cjs/idx/storage.js.map +1 -1
- package/cjs/idx/transactionMeta.js +24 -42
- package/cjs/idx/transactionMeta.js.map +1 -1
- package/cjs/idx/types/api.js +1 -9
- package/cjs/idx/types/api.js.map +1 -1
- package/cjs/idx/types/idx-js.js +3 -3
- package/cjs/idx/types/idx-js.js.map +1 -1
- package/cjs/idx/types/index.js +0 -7
- package/cjs/idx/types/index.js.map +1 -1
- package/cjs/idx/types/meta.js.map +1 -1
- package/cjs/idx/types/options.js.map +1 -1
- package/cjs/idx/unlockAccount.js +7 -11
- package/cjs/idx/unlockAccount.js.map +1 -1
- package/cjs/idx/util.js +24 -76
- package/cjs/idx/util.js.map +1 -1
- package/cjs/idx/webauthn.js +13 -18
- package/cjs/idx/webauthn.js.map +1 -1
- package/cjs/myaccount/api.js +0 -5
- package/cjs/myaccount/api.js.map +1 -1
- package/cjs/myaccount/emailApi.js +6 -21
- package/cjs/myaccount/emailApi.js.map +1 -1
- package/cjs/myaccount/factory.js +0 -3
- package/cjs/myaccount/factory.js.map +1 -1
- package/cjs/myaccount/index.js +0 -7
- package/cjs/myaccount/index.js.map +1 -1
- package/cjs/myaccount/mixin.js +0 -5
- package/cjs/myaccount/mixin.js.map +1 -1
- package/cjs/myaccount/phoneApi.js +5 -18
- package/cjs/myaccount/phoneApi.js.map +1 -1
- package/cjs/myaccount/profileApi.js +2 -9
- package/cjs/myaccount/profileApi.js.map +1 -1
- package/cjs/myaccount/request.js +12 -78
- package/cjs/myaccount/request.js.map +1 -1
- package/cjs/myaccount/transactions/Base.js +5 -7
- package/cjs/myaccount/transactions/Base.js.map +1 -1
- package/cjs/myaccount/transactions/EmailChallengeTransaction.js +5 -10
- package/cjs/myaccount/transactions/EmailChallengeTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/EmailStatusTransaction.js +2 -7
- package/cjs/myaccount/transactions/EmailStatusTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/EmailTransaction.js +5 -13
- package/cjs/myaccount/transactions/EmailTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/PhoneTransaction.js +5 -12
- package/cjs/myaccount/transactions/PhoneTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/ProfileSchemaTransaction.js +0 -5
- package/cjs/myaccount/transactions/ProfileSchemaTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/ProfileTransaction.js +0 -5
- package/cjs/myaccount/transactions/ProfileTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/index.js +0 -8
- package/cjs/myaccount/transactions/index.js.map +1 -1
- package/cjs/myaccount/types.js +0 -5
- package/cjs/myaccount/types.js.map +1 -1
- package/cjs/oidc/TokenManager.js +39 -100
- package/cjs/oidc/TokenManager.js.map +1 -1
- package/cjs/oidc/TransactionManager.js +19 -26
- package/cjs/oidc/TransactionManager.js.map +1 -1
- package/cjs/oidc/decodeToken.js +1 -5
- package/cjs/oidc/decodeToken.js.map +1 -1
- package/cjs/oidc/endpoints/authorize.js +9 -13
- package/cjs/oidc/endpoints/authorize.js.map +1 -1
- package/cjs/oidc/endpoints/index.js +0 -5
- package/cjs/oidc/endpoints/index.js.map +1 -1
- package/cjs/oidc/endpoints/token.js +5 -17
- package/cjs/oidc/endpoints/token.js.map +1 -1
- package/cjs/oidc/endpoints/well-known.js +7 -14
- package/cjs/oidc/endpoints/well-known.js.map +1 -1
- package/cjs/oidc/exchangeCodeForTokens.js +7 -12
- package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
- package/cjs/oidc/factory/OktaAuthOAuth.js +0 -6
- package/cjs/oidc/factory/OktaAuthOAuth.js.map +1 -1
- package/cjs/oidc/factory/api.js +6 -20
- package/cjs/oidc/factory/api.js.map +1 -1
- package/cjs/oidc/factory/index.js +0 -3
- package/cjs/oidc/factory/index.js.map +1 -1
- package/cjs/oidc/getToken.js +18 -30
- package/cjs/oidc/getToken.js.map +1 -1
- package/cjs/oidc/getUserInfo.js +1 -15
- package/cjs/oidc/getUserInfo.js.map +1 -1
- package/cjs/oidc/getWithPopup.js +4 -8
- package/cjs/oidc/getWithPopup.js.map +1 -1
- package/cjs/oidc/getWithRedirect.js +1 -8
- package/cjs/oidc/getWithRedirect.js.map +1 -1
- package/cjs/oidc/getWithoutPrompt.js +1 -5
- package/cjs/oidc/getWithoutPrompt.js.map +1 -1
- package/cjs/oidc/handleOAuthResponse.js +23 -40
- package/cjs/oidc/handleOAuthResponse.js.map +1 -1
- package/cjs/oidc/index.js +0 -32
- package/cjs/oidc/index.js.map +1 -1
- package/cjs/oidc/mixin/browser.js +6 -18
- package/cjs/oidc/mixin/browser.js.map +1 -1
- package/cjs/oidc/mixin/index.js +37 -89
- package/cjs/oidc/mixin/index.js.map +1 -1
- package/cjs/oidc/mixin/node.js +2 -9
- package/cjs/oidc/mixin/node.js.map +1 -1
- package/cjs/oidc/options/OAuthOptionsConstructor.js +17 -24
- package/cjs/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/cjs/oidc/options/browser.js.map +1 -1
- package/cjs/oidc/options/index.js +0 -1
- package/cjs/oidc/options/index.js.map +1 -1
- package/cjs/oidc/options/node.js.map +1 -1
- package/cjs/oidc/parseFromUrl.js +1 -32
- package/cjs/oidc/parseFromUrl.js.map +1 -1
- package/cjs/oidc/renewToken.js +5 -16
- package/cjs/oidc/renewToken.js.map +1 -1
- package/cjs/oidc/renewTokens.js +3 -15
- package/cjs/oidc/renewTokens.js.map +1 -1
- package/cjs/oidc/renewTokensWithRefresh.js +3 -13
- package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
- package/cjs/oidc/revokeToken.js +3 -14
- package/cjs/oidc/revokeToken.js.map +1 -1
- package/cjs/oidc/storage.js +0 -8
- package/cjs/oidc/storage.js.map +1 -1
- package/cjs/oidc/types/Token.js +1 -5
- package/cjs/oidc/types/Token.js.map +1 -1
- package/cjs/oidc/types/TokenManager.js +1 -1
- package/cjs/oidc/types/TokenManager.js.map +1 -1
- package/cjs/oidc/types/Transaction.js +1 -12
- package/cjs/oidc/types/Transaction.js.map +1 -1
- package/cjs/oidc/types/UserClaims.js.map +1 -1
- package/cjs/oidc/types/api.js.map +1 -1
- package/cjs/oidc/types/index.js +0 -21
- package/cjs/oidc/types/index.js.map +1 -1
- package/cjs/oidc/types/meta.js.map +1 -1
- package/cjs/oidc/types/options.js.map +1 -1
- package/cjs/oidc/types/proto.js.map +1 -1
- package/cjs/oidc/util/browser.js +4 -13
- package/cjs/oidc/util/browser.js.map +1 -1
- package/cjs/oidc/util/defaultTokenParams.js +5 -5
- package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
- package/cjs/oidc/util/errors.js +3 -8
- package/cjs/oidc/util/errors.js.map +1 -1
- package/cjs/oidc/util/index.js +0 -24
- package/cjs/oidc/util/index.js.map +1 -1
- package/cjs/oidc/util/loginRedirect.js +11 -25
- package/cjs/oidc/util/loginRedirect.js.map +1 -1
- package/cjs/oidc/util/oauth.js +3 -12
- package/cjs/oidc/util/oauth.js.map +1 -1
- package/cjs/oidc/util/oauthMeta.js +5 -6
- package/cjs/oidc/util/oauthMeta.js.map +1 -1
- package/cjs/oidc/util/pkce.js +1 -12
- package/cjs/oidc/util/pkce.js.map +1 -1
- package/cjs/oidc/util/prepareTokenParams.js +13 -26
- package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
- package/cjs/oidc/util/refreshToken.js +0 -7
- package/cjs/oidc/util/refreshToken.js.map +1 -1
- package/cjs/oidc/util/sharedStorage.js +0 -8
- package/cjs/oidc/util/sharedStorage.js.map +1 -1
- package/cjs/oidc/util/urlParams.js +9 -12
- package/cjs/oidc/util/urlParams.js.map +1 -1
- package/cjs/oidc/util/validateClaims.js +9 -17
- package/cjs/oidc/util/validateClaims.js.map +1 -1
- package/cjs/oidc/util/validateToken.js +1 -6
- package/cjs/oidc/util/validateToken.js.map +1 -1
- package/cjs/oidc/verifyToken.js +13 -23
- package/cjs/oidc/verifyToken.js.map +1 -1
- package/cjs/server/serverStorage.js +9 -27
- package/cjs/server/serverStorage.js.map +1 -1
- package/cjs/services/AutoRenewService.js +1 -17
- package/cjs/services/AutoRenewService.js.map +1 -1
- package/cjs/services/LeaderElectionService.js +1 -23
- package/cjs/services/LeaderElectionService.js.map +1 -1
- package/cjs/services/SyncStorageService.js +3 -37
- package/cjs/services/SyncStorageService.js.map +1 -1
- package/cjs/services/index.js +0 -5
- package/cjs/services/index.js.map +1 -1
- package/cjs/session/api.js +1 -12
- package/cjs/session/api.js.map +1 -1
- package/cjs/session/factory.js +0 -2
- package/cjs/session/factory.js.map +1 -1
- package/cjs/session/index.js +0 -7
- package/cjs/session/index.js.map +1 -1
- package/cjs/session/mixin.js +2 -6
- package/cjs/session/mixin.js.map +1 -1
- package/cjs/storage/BaseStorageManager.js +13 -25
- package/cjs/storage/BaseStorageManager.js.map +1 -1
- package/cjs/storage/SavedObject.js +7 -19
- package/cjs/storage/SavedObject.js.map +1 -1
- package/cjs/storage/index.js +0 -9
- package/cjs/storage/index.js.map +1 -1
- package/cjs/storage/mixin.js +2 -4
- package/cjs/storage/mixin.js.map +1 -1
- package/cjs/storage/options/StorageOptionsConstructor.js +3 -6
- package/cjs/storage/options/StorageOptionsConstructor.js.map +1 -1
- package/cjs/storage/options/browser.js +7 -15
- package/cjs/storage/options/browser.js.map +1 -1
- package/cjs/storage/options/node.js +3 -6
- package/cjs/storage/options/node.js.map +1 -1
- package/cjs/util/PromiseQueue.js +7 -15
- package/cjs/util/PromiseQueue.js.map +1 -1
- package/cjs/util/console.js +3 -7
- package/cjs/util/console.js.map +1 -1
- package/cjs/util/index.js +0 -11
- package/cjs/util/index.js.map +1 -1
- package/cjs/util/misc.js +3 -8
- package/cjs/util/misc.js.map +1 -1
- package/cjs/util/object.js +9 -23
- package/cjs/util/object.js.map +1 -1
- package/cjs/util/types.js +1 -5
- package/cjs/util/types.js.map +1 -1
- package/cjs/util/url.js +5 -14
- package/cjs/util/url.js.map +1 -1
- package/dist/okta-auth-js.authn.min.analyzer.html +3 -3
- package/dist/okta-auth-js.authn.min.js +1 -1
- package/dist/okta-auth-js.authn.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.authn.min.js.map +1 -1
- package/dist/okta-auth-js.core.min.analyzer.html +3 -3
- package/dist/okta-auth-js.core.min.js +1 -1
- package/dist/okta-auth-js.core.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.core.min.js.map +1 -1
- package/dist/okta-auth-js.idx.min.analyzer.html +3 -3
- package/dist/okta-auth-js.idx.min.js +1 -1
- package/dist/okta-auth-js.idx.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.idx.min.js.map +1 -1
- package/dist/okta-auth-js.min.analyzer.html +3 -3
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.min.js.map +1 -1
- package/dist/okta-auth-js.myaccount.min.analyzer.html +3 -3
- package/dist/okta-auth-js.myaccount.min.js +1 -1
- package/dist/okta-auth-js.myaccount.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.myaccount.min.js.map +1 -1
- package/dist/okta-auth-js.polyfill.js +1 -1
- package/dist/okta-auth-js.polyfill.js.map +1 -1
- package/esm/browser/http/OktaUserAgent.js +2 -2
- package/esm/browser/http/request.js +56 -23
- package/esm/browser/http/request.js.map +1 -1
- package/esm/browser/idx/interact.js +2 -2
- package/esm/browser/idx/interact.js.map +1 -1
- package/esm/browser/idx/run.js +2 -1
- package/esm/browser/idx/run.js.map +1 -1
- package/esm/browser/idx/transactionMeta.js +3 -2
- package/esm/browser/idx/transactionMeta.js.map +1 -1
- package/esm/browser/myaccount/request.js +2 -43
- package/esm/browser/myaccount/request.js.map +1 -1
- package/esm/browser/oidc/endpoints/authorize.js +1 -0
- package/esm/browser/oidc/endpoints/authorize.js.map +1 -1
- package/esm/browser/oidc/exchangeCodeForTokens.js +2 -1
- package/esm/browser/oidc/exchangeCodeForTokens.js.map +1 -1
- package/esm/browser/oidc/handleOAuthResponse.js +17 -16
- package/esm/browser/oidc/handleOAuthResponse.js.map +1 -1
- package/esm/browser/oidc/options/OAuthOptionsConstructor.js +2 -0
- package/esm/browser/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/esm/browser/oidc/util/defaultTokenParams.js +3 -1
- package/esm/browser/oidc/util/defaultTokenParams.js.map +1 -1
- package/esm/browser/oidc/util/oauthMeta.js +1 -0
- package/esm/browser/oidc/util/oauthMeta.js.map +1 -1
- package/esm/browser/oidc/util/validateClaims.js +9 -4
- package/esm/browser/oidc/util/validateClaims.js.map +1 -1
- package/esm/browser/oidc/verifyToken.js +2 -2
- package/esm/browser/oidc/verifyToken.js.map +1 -1
- package/esm/browser/package.json +1 -1
- package/esm/node/http/OktaUserAgent.js +2 -2
- package/esm/node/http/request.js +56 -23
- package/esm/node/http/request.js.map +1 -1
- package/esm/node/idx/interact.js +2 -2
- package/esm/node/idx/interact.js.map +1 -1
- package/esm/node/idx/run.js +2 -1
- package/esm/node/idx/run.js.map +1 -1
- package/esm/node/idx/transactionMeta.js +3 -2
- package/esm/node/idx/transactionMeta.js.map +1 -1
- package/esm/node/myaccount/request.js +2 -43
- package/esm/node/myaccount/request.js.map +1 -1
- package/esm/node/oidc/endpoints/authorize.js +1 -0
- package/esm/node/oidc/endpoints/authorize.js.map +1 -1
- package/esm/node/oidc/exchangeCodeForTokens.js +2 -1
- package/esm/node/oidc/exchangeCodeForTokens.js.map +1 -1
- package/esm/node/oidc/handleOAuthResponse.js +17 -16
- package/esm/node/oidc/handleOAuthResponse.js.map +1 -1
- package/esm/node/oidc/options/OAuthOptionsConstructor.js +2 -0
- package/esm/node/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/esm/node/oidc/util/defaultTokenParams.js +3 -1
- package/esm/node/oidc/util/defaultTokenParams.js.map +1 -1
- package/esm/node/oidc/util/oauthMeta.js +1 -0
- package/esm/node/oidc/util/oauthMeta.js.map +1 -1
- package/esm/node/oidc/util/validateClaims.js +9 -4
- package/esm/node/oidc/util/validateClaims.js.map +1 -1
- package/esm/node/oidc/verifyToken.js +2 -2
- package/esm/node/oidc/verifyToken.js.map +1 -1
- package/esm/node/package.json +1 -1
- package/package.json +12 -13
- package/polyfill/index.js +8 -5
- package/types/lib/core/options.d.ts +2 -0
- package/types/lib/idx/interact.d.ts +1 -0
- package/types/lib/idx/options.d.ts +2 -0
- package/types/lib/idx/types/meta.d.ts +1 -0
- package/types/lib/idx/types/options.d.ts +1 -0
- package/types/lib/oidc/options/OAuthOptionsConstructor.d.ts +2 -0
- package/types/lib/oidc/types/UserClaims.d.ts +1 -0
- package/types/lib/oidc/types/api.d.ts +1 -0
- package/types/lib/oidc/types/meta.d.ts +1 -1
- package/types/lib/oidc/types/options.d.ts +2 -1
- package/types/lib/oidc/types/proto.d.ts +1 -0
- package/umd/authn.js +1 -1
- package/umd/authn.js.LICENSE.txt +2 -0
- package/umd/authn.js.map +1 -1
- package/umd/core.js +1 -1
- package/umd/core.js.LICENSE.txt +2 -0
- package/umd/core.js.map +1 -1
- package/umd/default.js +1 -1
- package/umd/default.js.LICENSE.txt +2 -0
- package/umd/default.js.map +1 -1
- package/umd/idx.js +1 -1
- package/umd/idx.js.LICENSE.txt +2 -0
- package/umd/idx.js.map +1 -1
- package/umd/myaccount.js +1 -1
- package/umd/myaccount.js.LICENSE.txt +2 -0
- package/umd/myaccount.js.map +1 -1
package/cjs/oidc/TokenManager.js
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
exports.TokenManager = void 0;
|
|
6
|
-
|
|
7
5
|
var _util = require("../util");
|
|
8
|
-
|
|
9
6
|
var _errors = require("../errors");
|
|
10
|
-
|
|
11
7
|
var _util2 = require("../oidc/util");
|
|
12
|
-
|
|
13
8
|
var _features = require("../features");
|
|
14
|
-
|
|
15
9
|
var _clock = _interopRequireDefault(require("../clock"));
|
|
16
|
-
|
|
17
10
|
var _types = require("./types");
|
|
18
|
-
|
|
19
11
|
var _constants = require("../constants");
|
|
20
|
-
|
|
21
12
|
/*!
|
|
22
13
|
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
23
14
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -30,6 +21,7 @@ var _constants = require("../constants");
|
|
|
30
21
|
* See the License for the specific language governing permissions and limitations under the License.
|
|
31
22
|
*
|
|
32
23
|
*/
|
|
24
|
+
|
|
33
25
|
const DEFAULT_OPTIONS = {
|
|
34
26
|
// TODO: remove in next major version - OKTA-473815
|
|
35
27
|
autoRenew: true,
|
|
@@ -42,14 +34,12 @@ const DEFAULT_OPTIONS = {
|
|
|
42
34
|
expireEarlySeconds: 30,
|
|
43
35
|
storageKey: _constants.TOKEN_STORAGE_NAME
|
|
44
36
|
};
|
|
45
|
-
|
|
46
37
|
function defaultState() {
|
|
47
38
|
return {
|
|
48
39
|
expireTimeouts: {},
|
|
49
40
|
renewPromise: null
|
|
50
41
|
};
|
|
51
42
|
}
|
|
52
|
-
|
|
53
43
|
class TokenManager {
|
|
54
44
|
on(event, handler, context) {
|
|
55
45
|
if (context) {
|
|
@@ -58,151 +48,127 @@ class TokenManager {
|
|
|
58
48
|
this.emitter.on(event, handler);
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
|
-
|
|
62
51
|
off(event, handler) {
|
|
63
52
|
if (handler) {
|
|
64
53
|
this.emitter.off(event, handler);
|
|
65
54
|
} else {
|
|
66
55
|
this.emitter.off(event);
|
|
67
56
|
}
|
|
68
|
-
}
|
|
69
|
-
|
|
57
|
+
}
|
|
70
58
|
|
|
59
|
+
// eslint-disable-next-line complexity
|
|
71
60
|
constructor(sdk, options = {}) {
|
|
72
61
|
this.sdk = sdk;
|
|
73
62
|
this.emitter = sdk.emitter;
|
|
74
|
-
|
|
75
63
|
if (!this.emitter) {
|
|
76
64
|
throw new _errors.AuthSdkError('Emitter should be initialized before TokenManager');
|
|
77
65
|
}
|
|
78
|
-
|
|
79
66
|
options = Object.assign({}, DEFAULT_OPTIONS, (0, _util.removeNils)(options));
|
|
80
|
-
|
|
81
67
|
if (!(0, _features.isLocalhost)()) {
|
|
82
68
|
options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;
|
|
83
69
|
}
|
|
84
|
-
|
|
85
70
|
this.options = options;
|
|
86
71
|
const storageOptions = (0, _util.removeNils)({
|
|
87
72
|
storageKey: options.storageKey,
|
|
88
73
|
secure: options.secure
|
|
89
74
|
});
|
|
90
|
-
|
|
91
75
|
if (typeof options.storage === 'object') {
|
|
92
76
|
// A custom storage provider must implement getItem(key) and setItem(key, val)
|
|
93
77
|
storageOptions.storageProvider = options.storage;
|
|
94
78
|
} else if (options.storage) {
|
|
95
79
|
storageOptions.storageType = options.storage;
|
|
96
80
|
}
|
|
97
|
-
|
|
98
|
-
|
|
81
|
+
this.storage = sdk.storageManager.getTokenStorage({
|
|
82
|
+
...storageOptions,
|
|
99
83
|
useSeparateCookies: true
|
|
100
84
|
});
|
|
101
85
|
this.clock = _clock.default.create();
|
|
102
86
|
this.state = defaultState();
|
|
103
87
|
}
|
|
104
|
-
|
|
105
88
|
start() {
|
|
106
89
|
if (this.options.clearPendingRemoveTokens) {
|
|
107
90
|
this.clearPendingRemoveTokens();
|
|
108
91
|
}
|
|
109
|
-
|
|
110
92
|
this.setExpireEventTimeoutAll();
|
|
111
93
|
}
|
|
112
|
-
|
|
113
94
|
stop() {
|
|
114
95
|
this.clearExpireEventTimeoutAll();
|
|
115
96
|
}
|
|
116
|
-
|
|
117
97
|
getOptions() {
|
|
118
98
|
return (0, _util.clone)(this.options);
|
|
119
99
|
}
|
|
120
|
-
|
|
121
100
|
getExpireTime(token) {
|
|
122
101
|
const expireEarlySeconds = this.options.expireEarlySeconds || 0;
|
|
123
102
|
var expireTime = token.expiresAt - expireEarlySeconds;
|
|
124
103
|
return expireTime;
|
|
125
104
|
}
|
|
126
|
-
|
|
127
105
|
hasExpired(token) {
|
|
128
106
|
var expireTime = this.getExpireTime(token);
|
|
129
107
|
return expireTime <= this.clock.now();
|
|
130
108
|
}
|
|
131
|
-
|
|
132
109
|
emitExpired(key, token) {
|
|
133
110
|
this.emitter.emit(_types.EVENT_EXPIRED, key, token);
|
|
134
111
|
}
|
|
135
|
-
|
|
136
112
|
emitRenewed(key, freshToken, oldToken) {
|
|
137
113
|
this.emitter.emit(_types.EVENT_RENEWED, key, freshToken, oldToken);
|
|
138
114
|
}
|
|
139
|
-
|
|
140
115
|
emitAdded(key, token) {
|
|
141
116
|
this.emitter.emit(_types.EVENT_ADDED, key, token);
|
|
142
117
|
}
|
|
143
|
-
|
|
144
118
|
emitRemoved(key, token) {
|
|
145
119
|
this.emitter.emit(_types.EVENT_REMOVED, key, token);
|
|
146
120
|
}
|
|
147
|
-
|
|
148
121
|
emitError(error) {
|
|
149
122
|
this.emitter.emit(_types.EVENT_ERROR, error);
|
|
150
123
|
}
|
|
151
|
-
|
|
152
124
|
clearExpireEventTimeout(key) {
|
|
153
125
|
clearTimeout(this.state.expireTimeouts[key]);
|
|
154
|
-
delete this.state.expireTimeouts[key];
|
|
126
|
+
delete this.state.expireTimeouts[key];
|
|
155
127
|
|
|
128
|
+
// Remove the renew promise (if it exists)
|
|
156
129
|
this.state.renewPromise = null;
|
|
157
130
|
}
|
|
158
|
-
|
|
159
131
|
clearExpireEventTimeoutAll() {
|
|
160
132
|
var expireTimeouts = this.state.expireTimeouts;
|
|
161
|
-
|
|
162
133
|
for (var key in expireTimeouts) {
|
|
163
134
|
if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {
|
|
164
135
|
continue;
|
|
165
136
|
}
|
|
166
|
-
|
|
167
137
|
this.clearExpireEventTimeout(key);
|
|
168
138
|
}
|
|
169
139
|
}
|
|
170
|
-
|
|
171
140
|
setExpireEventTimeout(key, token) {
|
|
172
141
|
if ((0, _types.isRefreshToken)(token)) {
|
|
173
142
|
return;
|
|
174
143
|
}
|
|
175
|
-
|
|
176
144
|
var expireTime = this.getExpireTime(token);
|
|
177
|
-
var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;
|
|
145
|
+
var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;
|
|
178
146
|
|
|
147
|
+
// Clear any existing timeout
|
|
179
148
|
this.clearExpireEventTimeout(key);
|
|
180
149
|
var expireEventTimeout = setTimeout(() => {
|
|
181
150
|
this.emitExpired(key, token);
|
|
182
|
-
}, expireEventWait);
|
|
151
|
+
}, expireEventWait);
|
|
183
152
|
|
|
153
|
+
// Add a new timeout
|
|
184
154
|
this.state.expireTimeouts[key] = expireEventTimeout;
|
|
185
155
|
}
|
|
186
|
-
|
|
187
156
|
setExpireEventTimeoutAll() {
|
|
188
157
|
var tokenStorage = this.storage.getStorage();
|
|
189
|
-
|
|
190
158
|
for (var key in tokenStorage) {
|
|
191
159
|
if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {
|
|
192
160
|
continue;
|
|
193
161
|
}
|
|
194
|
-
|
|
195
162
|
var token = tokenStorage[key];
|
|
196
163
|
this.setExpireEventTimeout(key, token);
|
|
197
164
|
}
|
|
198
|
-
}
|
|
199
|
-
|
|
165
|
+
}
|
|
200
166
|
|
|
167
|
+
// reset timeouts to setup autoRenew for tokens from other document context (tabs)
|
|
201
168
|
resetExpireEventTimeoutAll() {
|
|
202
169
|
this.clearExpireEventTimeoutAll();
|
|
203
170
|
this.setExpireEventTimeoutAll();
|
|
204
171
|
}
|
|
205
|
-
|
|
206
172
|
add(key, token) {
|
|
207
173
|
var tokenStorage = this.storage.getStorage();
|
|
208
174
|
(0, _util2.validateToken)(token);
|
|
@@ -212,22 +178,18 @@ class TokenManager {
|
|
|
212
178
|
this.emitAdded(key, token);
|
|
213
179
|
this.setExpireEventTimeout(key, token);
|
|
214
180
|
}
|
|
215
|
-
|
|
216
181
|
getSync(key) {
|
|
217
182
|
var tokenStorage = this.storage.getStorage();
|
|
218
183
|
return tokenStorage[key];
|
|
219
184
|
}
|
|
220
|
-
|
|
221
185
|
async get(key) {
|
|
222
186
|
return this.getSync(key);
|
|
223
187
|
}
|
|
224
|
-
|
|
225
188
|
getTokensSync() {
|
|
226
189
|
const tokens = {};
|
|
227
190
|
const tokenStorage = this.storage.getStorage();
|
|
228
191
|
Object.keys(tokenStorage).forEach(key => {
|
|
229
192
|
const token = tokenStorage[key];
|
|
230
|
-
|
|
231
193
|
if ((0, _types.isAccessToken)(token)) {
|
|
232
194
|
tokens.accessToken = token;
|
|
233
195
|
} else if ((0, _types.isIDToken)(token)) {
|
|
@@ -238,11 +200,9 @@ class TokenManager {
|
|
|
238
200
|
});
|
|
239
201
|
return tokens;
|
|
240
202
|
}
|
|
241
|
-
|
|
242
203
|
async getTokens() {
|
|
243
204
|
return this.getTokensSync();
|
|
244
205
|
}
|
|
245
|
-
|
|
246
206
|
getStorageKeyByType(type) {
|
|
247
207
|
const tokenStorage = this.storage.getStorage();
|
|
248
208
|
const key = Object.keys(tokenStorage).filter(key => {
|
|
@@ -251,41 +211,36 @@ class TokenManager {
|
|
|
251
211
|
})[0];
|
|
252
212
|
return key;
|
|
253
213
|
}
|
|
254
|
-
|
|
255
214
|
getTokenType(token) {
|
|
256
215
|
if ((0, _types.isAccessToken)(token)) {
|
|
257
216
|
return 'accessToken';
|
|
258
217
|
}
|
|
259
|
-
|
|
260
218
|
if ((0, _types.isIDToken)(token)) {
|
|
261
219
|
return 'idToken';
|
|
262
220
|
}
|
|
263
|
-
|
|
264
221
|
if ((0, _types.isRefreshToken)(token)) {
|
|
265
222
|
return 'refreshToken';
|
|
266
223
|
}
|
|
267
|
-
|
|
268
224
|
throw new _errors.AuthSdkError('Unknown token type');
|
|
269
|
-
}
|
|
270
|
-
|
|
225
|
+
}
|
|
271
226
|
|
|
227
|
+
// for synchronization of LocalStorage cross tabs for IE11
|
|
272
228
|
emitSetStorageEvent() {
|
|
273
229
|
if ((0, _features.isIE11OrLess)()) {
|
|
274
230
|
const storage = this.storage.getStorage();
|
|
275
231
|
this.emitter.emit(_types.EVENT_SET_STORAGE, storage);
|
|
276
232
|
}
|
|
277
|
-
}
|
|
278
|
-
|
|
233
|
+
}
|
|
279
234
|
|
|
235
|
+
// used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11
|
|
280
236
|
getStorage() {
|
|
281
237
|
return this.storage;
|
|
282
238
|
}
|
|
283
|
-
|
|
284
|
-
|
|
239
|
+
setTokens(tokens,
|
|
240
|
+
// TODO: callbacks can be removed in the next major version OKTA-407224
|
|
285
241
|
accessTokenCb, idTokenCb, refreshTokenCb) {
|
|
286
242
|
const handleTokenCallback = (key, token) => {
|
|
287
243
|
const type = this.getTokenType(token);
|
|
288
|
-
|
|
289
244
|
if (type === 'accessToken') {
|
|
290
245
|
accessTokenCb && accessTokenCb(key, token);
|
|
291
246
|
} else if (type === 'idToken') {
|
|
@@ -294,55 +249,50 @@ class TokenManager {
|
|
|
294
249
|
refreshTokenCb && refreshTokenCb(key, token);
|
|
295
250
|
}
|
|
296
251
|
};
|
|
297
|
-
|
|
298
252
|
const handleAdded = (key, token) => {
|
|
299
253
|
this.emitAdded(key, token);
|
|
300
254
|
this.setExpireEventTimeout(key, token);
|
|
301
255
|
handleTokenCallback(key, token);
|
|
302
256
|
};
|
|
303
|
-
|
|
304
257
|
const handleRenewed = (key, token, oldToken) => {
|
|
305
258
|
this.emitRenewed(key, token, oldToken);
|
|
306
259
|
this.clearExpireEventTimeout(key);
|
|
307
260
|
this.setExpireEventTimeout(key, token);
|
|
308
261
|
handleTokenCallback(key, token);
|
|
309
262
|
};
|
|
310
|
-
|
|
311
263
|
const handleRemoved = (key, token) => {
|
|
312
264
|
this.clearExpireEventTimeout(key);
|
|
313
265
|
this.emitRemoved(key, token);
|
|
314
266
|
handleTokenCallback(key, token);
|
|
315
267
|
};
|
|
316
|
-
|
|
317
268
|
const types = ['idToken', 'accessToken', 'refreshToken'];
|
|
318
|
-
const existingTokens = this.getTokensSync();
|
|
269
|
+
const existingTokens = this.getTokensSync();
|
|
319
270
|
|
|
271
|
+
// valid tokens
|
|
320
272
|
types.forEach(type => {
|
|
321
273
|
const token = tokens[type];
|
|
322
|
-
|
|
323
274
|
if (token) {
|
|
324
275
|
(0, _util2.validateToken)(token, type);
|
|
325
276
|
}
|
|
326
|
-
});
|
|
277
|
+
});
|
|
327
278
|
|
|
279
|
+
// add token to storage
|
|
328
280
|
const storage = types.reduce((storage, type) => {
|
|
329
281
|
const token = tokens[type];
|
|
330
|
-
|
|
331
282
|
if (token) {
|
|
332
283
|
const storageKey = this.getStorageKeyByType(type) || type;
|
|
333
284
|
storage[storageKey] = token;
|
|
334
285
|
}
|
|
335
|
-
|
|
336
286
|
return storage;
|
|
337
287
|
}, {});
|
|
338
288
|
this.storage.setStorage(storage);
|
|
339
|
-
this.emitSetStorageEvent();
|
|
289
|
+
this.emitSetStorageEvent();
|
|
340
290
|
|
|
291
|
+
// emit event and start expiration timer
|
|
341
292
|
types.forEach(type => {
|
|
342
293
|
const newToken = tokens[type];
|
|
343
294
|
const existingToken = existingTokens[type];
|
|
344
295
|
const storageKey = this.getStorageKeyByType(type) || type;
|
|
345
|
-
|
|
346
296
|
if (newToken && existingToken) {
|
|
347
297
|
// renew
|
|
348
298
|
// call handleRemoved first, since it clears timers
|
|
@@ -358,7 +308,6 @@ class TokenManager {
|
|
|
358
308
|
}
|
|
359
309
|
});
|
|
360
310
|
}
|
|
361
|
-
|
|
362
311
|
remove(key) {
|
|
363
312
|
// Clear any listener for this token
|
|
364
313
|
this.clearExpireEventTimeout(key);
|
|
@@ -368,44 +317,42 @@ class TokenManager {
|
|
|
368
317
|
this.storage.setStorage(tokenStorage);
|
|
369
318
|
this.emitSetStorageEvent();
|
|
370
319
|
this.emitRemoved(key, removedToken);
|
|
371
|
-
}
|
|
372
|
-
|
|
320
|
+
}
|
|
373
321
|
|
|
322
|
+
// TODO: this methods is redundant and can be removed in the next major version OKTA-407224
|
|
374
323
|
async renewToken(token) {
|
|
375
324
|
var _this$sdk$token;
|
|
376
|
-
|
|
377
325
|
return (_this$sdk$token = this.sdk.token) === null || _this$sdk$token === void 0 ? void 0 : _this$sdk$token.renew(token);
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
|
|
326
|
+
}
|
|
327
|
+
// TODO: this methods is redundant and can be removed in the next major version OKTA-407224
|
|
381
328
|
validateToken(token) {
|
|
382
329
|
return (0, _util2.validateToken)(token);
|
|
383
|
-
}
|
|
384
|
-
|
|
330
|
+
}
|
|
385
331
|
|
|
332
|
+
// TODO: renew method should take no param, change in the next major version OKTA-407224
|
|
386
333
|
renew(key) {
|
|
387
334
|
// Multiple callers may receive the same promise. They will all resolve or reject from the same request.
|
|
388
335
|
if (this.state.renewPromise) {
|
|
389
336
|
return this.state.renewPromise;
|
|
390
337
|
}
|
|
391
|
-
|
|
392
338
|
try {
|
|
393
339
|
var token = this.getSync(key);
|
|
394
|
-
|
|
395
340
|
if (!token) {
|
|
396
341
|
throw new _errors.AuthSdkError('The tokenManager has no token for the key: ' + key);
|
|
397
342
|
}
|
|
398
343
|
} catch (e) {
|
|
399
344
|
return Promise.reject(e);
|
|
400
|
-
}
|
|
345
|
+
}
|
|
401
346
|
|
|
347
|
+
// Remove existing autoRenew timeout
|
|
348
|
+
this.clearExpireEventTimeout(key);
|
|
402
349
|
|
|
403
|
-
|
|
350
|
+
// A refresh token means a replace instead of renewal
|
|
404
351
|
// Store the renew promise state, to avoid renewing again
|
|
405
|
-
|
|
406
352
|
const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens().then(tokens => {
|
|
407
|
-
this.setTokens(tokens);
|
|
353
|
+
this.setTokens(tokens);
|
|
408
354
|
|
|
355
|
+
// resolve token based on the key
|
|
409
356
|
const tokenType = this.getTokenType(token);
|
|
410
357
|
return tokens[tokenType];
|
|
411
358
|
}).catch(err => {
|
|
@@ -420,7 +367,6 @@ class TokenManager {
|
|
|
420
367
|
});
|
|
421
368
|
return renewPromise;
|
|
422
369
|
}
|
|
423
|
-
|
|
424
370
|
clear() {
|
|
425
371
|
const tokens = this.getTokensSync();
|
|
426
372
|
this.clearExpireEventTimeoutAll();
|
|
@@ -430,7 +376,6 @@ class TokenManager {
|
|
|
430
376
|
this.emitRemoved(key, tokens[key]);
|
|
431
377
|
});
|
|
432
378
|
}
|
|
433
|
-
|
|
434
379
|
clearPendingRemoveTokens() {
|
|
435
380
|
const tokenStorage = this.storage.getStorage();
|
|
436
381
|
const removedTokens = {};
|
|
@@ -447,24 +392,20 @@ class TokenManager {
|
|
|
447
392
|
this.emitRemoved(key, removedTokens[key]);
|
|
448
393
|
});
|
|
449
394
|
}
|
|
450
|
-
|
|
451
395
|
updateRefreshToken(token) {
|
|
452
|
-
const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY;
|
|
453
|
-
|
|
396
|
+
const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY;
|
|
454
397
|
|
|
398
|
+
// do not emit any event
|
|
455
399
|
var tokenStorage = this.storage.getStorage();
|
|
456
400
|
(0, _util2.validateToken)(token);
|
|
457
401
|
tokenStorage[key] = token;
|
|
458
402
|
this.storage.setStorage(tokenStorage);
|
|
459
403
|
this.emitSetStorageEvent();
|
|
460
404
|
}
|
|
461
|
-
|
|
462
405
|
removeRefreshToken() {
|
|
463
406
|
const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY;
|
|
464
|
-
|
|
465
407
|
this.remove(key);
|
|
466
408
|
}
|
|
467
|
-
|
|
468
409
|
addPendingRemoveFlags() {
|
|
469
410
|
const tokens = this.getTokensSync();
|
|
470
411
|
Object.keys(tokens).forEach(key => {
|
|
@@ -472,8 +413,6 @@ class TokenManager {
|
|
|
472
413
|
});
|
|
473
414
|
this.setTokens(tokens);
|
|
474
415
|
}
|
|
475
|
-
|
|
476
416
|
}
|
|
477
|
-
|
|
478
417
|
exports.TokenManager = TokenManager;
|
|
479
418
|
//# sourceMappingURL=TokenManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenManager.js","names":["DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","storage","undefined","expireEarlySeconds","storageKey","TOKEN_STORAGE_NAME","defaultState","expireTimeouts","renewPromise","TokenManager","on","event","handler","context","emitter","off","constructor","sdk","options","AuthSdkError","Object","assign","removeNils","isLocalhost","storageOptions","secure","storageProvider","storageType","storageManager","getTokenStorage","useSeparateCookies","clock","SdkClock","create","state","start","setExpireEventTimeoutAll","stop","clearExpireEventTimeoutAll","getOptions","clone","getExpireTime","token","expireTime","expiresAt","hasExpired","now","emitExpired","key","emit","EVENT_EXPIRED","emitRenewed","freshToken","oldToken","EVENT_RENEWED","emitAdded","EVENT_ADDED","emitRemoved","EVENT_REMOVED","emitError","error","EVENT_ERROR","clearExpireEventTimeout","clearTimeout","prototype","hasOwnProperty","call","setExpireEventTimeout","isRefreshToken","expireEventWait","Math","max","expireEventTimeout","setTimeout","tokenStorage","getStorage","resetExpireEventTimeoutAll","add","validateToken","setStorage","emitSetStorageEvent","getSync","get","getTokensSync","tokens","keys","forEach","isAccessToken","accessToken","isIDToken","idToken","refreshToken","getTokens","getStorageKeyByType","type","filter","getTokenType","isIE11OrLess","EVENT_SET_STORAGE","setTokens","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","types","existingTokens","reduce","newToken","existingToken","remove","removedToken","renewToken","renew","e","Promise","reject","renewTokens","then","tokenType","catch","err","tokenKey","finally","clear","clearStorage","removedTokens","pendingRemove","updateRefreshToken","REFRESH_TOKEN_STORAGE_KEY","removeRefreshToken","addPendingRemoveFlags"],"sources":["../../../lib/oidc/TokenManager.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n TokenManagerErrorEventHandler,\n TokenManagerSetStorageEventHandler,\n TokenManagerRenewEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback,\n EVENT_RENEWED,\n EVENT_ADDED,\n EVENT_ERROR,\n EVENT_EXPIRED,\n EVENT_REMOVED,\n EVENT_SET_STORAGE,\n TokenManagerAnyEventHandler,\n TokenManagerAnyEvent,\n OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n // TODO: remove in next major version - OKTA-473815\n autoRenew: true,\n autoRemove: true,\n syncStorage: true,\n // --- //\n clearPendingRemoveTokens: true,\n storage: undefined, // will use value from storageManager config\n expireEarlySeconds: 30,\n storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n expireTimeouts: Record<string, unknown>;\n renewPromise: Promise<Token | undefined> | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthOAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler: TokenManagerEventHandler, context?: object): void;\n on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n if (context) {\n this.emitter.on(event, handler, context);\n } else {\n this.emitter.on(event, handler);\n }\n }\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler?: TokenManagerEventHandler): void;\n off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n if (handler) {\n this.emitter.off(event, handler);\n } else {\n this.emitter.off(event);\n }\n }\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n this.sdk = sdk;\n this.emitter = (sdk as any).emitter;\n if (!this.emitter) {\n throw new AuthSdkError('Emitter should be initialized before TokenManager');\n }\n \n options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n if (!isLocalhost()) {\n options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n }\n\n this.options = options;\n\n const storageOptions: StorageOptions = removeNils({\n storageKey: options.storageKey,\n secure: options.secure,\n });\n if (typeof options.storage === 'object') {\n // A custom storage provider must implement getItem(key) and setItem(key, val)\n storageOptions.storageProvider = options.storage;\n } else if (options.storage) {\n storageOptions.storageType = options.storage as StorageType;\n }\n\n this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n this.clock = SdkClock.create(/* sdk, options */);\n this.state = defaultState();\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n clearExpireEventTimeout(key) {\n clearTimeout(this.state.expireTimeouts[key] as any);\n delete this.state.expireTimeouts[key];\n \n // Remove the renew promise (if it exists)\n this.state.renewPromise = null;\n }\n \n clearExpireEventTimeoutAll() {\n var expireTimeouts = this.state.expireTimeouts;\n for (var key in expireTimeouts) {\n if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n continue;\n }\n this.clearExpireEventTimeout(key);\n }\n }\n \n setExpireEventTimeout(key, token) {\n if (isRefreshToken(token)) {\n return;\n }\n\n var expireTime = this.getExpireTime(token);\n var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n \n // Clear any existing timeout\n this.clearExpireEventTimeout(key);\n \n var expireEventTimeout = setTimeout(() => {\n this.emitExpired(key, token);\n }, expireEventWait);\n \n // Add a new timeout\n this.state.expireTimeouts[key] = expireEventTimeout;\n }\n \n setExpireEventTimeoutAll() {\n var tokenStorage = this.storage.getStorage();\n for(var key in tokenStorage) {\n if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n continue;\n }\n var token = tokenStorage[key];\n this.setExpireEventTimeout(key, token);\n }\n }\n \n // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n resetExpireEventTimeoutAll() {\n this.clearExpireEventTimeoutAll();\n this.setExpireEventTimeoutAll();\n }\n \n add(key, token: Token) {\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key): Token {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise<Token> {\n return this.getSync(key);\n }\n \n getTokensSync(): Tokens {\n const tokens = {} as Tokens;\n const tokenStorage = this.storage.getStorage();\n Object.keys(tokenStorage).forEach(key => {\n const token = tokenStorage[key];\n if (isAccessToken(token)) {\n tokens.accessToken = token;\n } else if (isIDToken(token)) {\n tokens.idToken = token;\n } else if (isRefreshToken(token)) { \n tokens.refreshToken = token;\n }\n });\n return tokens;\n }\n \n async getTokens(): Promise<Tokens> {\n return this.getTokensSync();\n }\n\n getStorageKeyByType(type: TokenType): string {\n const tokenStorage = this.storage.getStorage();\n const key = Object.keys(tokenStorage).filter(key => {\n const token = tokenStorage[key];\n return (isAccessToken(token) && type === 'accessToken') \n || (isIDToken(token) && type === 'idToken')\n || (isRefreshToken(token) && type === 'refreshToken');\n })[0];\n return key;\n }\n\n private getTokenType(token: Token): TokenType {\n if (isAccessToken(token)) {\n return 'accessToken';\n }\n if (isIDToken(token)) {\n return 'idToken';\n }\n if(isRefreshToken(token)) {\n return 'refreshToken';\n }\n throw new AuthSdkError('Unknown token type');\n }\n\n // for synchronization of LocalStorage cross tabs for IE11\n private emitSetStorageEvent() {\n if (isIE11OrLess()) {\n const storage = this.storage.getStorage();\n this.emitter.emit(EVENT_SET_STORAGE, storage);\n }\n }\n\n // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n public getStorage() {\n return this.storage;\n }\n\n setTokens(\n tokens: Tokens,\n // TODO: callbacks can be removed in the next major version OKTA-407224\n accessTokenCb?: AccessTokenCallback, \n idTokenCb?: IDTokenCallback,\n refreshTokenCb?: RefreshTokenCallback\n ): void {\n const handleTokenCallback = (key, token) => {\n const type = this.getTokenType(token);\n if (type === 'accessToken') {\n accessTokenCb && accessTokenCb(key, token);\n } else if (type === 'idToken') {\n idTokenCb && idTokenCb(key, token);\n } else if (type === 'refreshToken') {\n refreshTokenCb && refreshTokenCb(key, token);\n }\n };\n const handleAdded = (key, token) => {\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRenewed = (key, token, oldToken) => {\n this.emitRenewed(key, token, oldToken);\n this.clearExpireEventTimeout(key);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRemoved = (key, token) => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, token);\n handleTokenCallback(key, token);\n };\n \n const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n const existingTokens = this.getTokensSync();\n\n // valid tokens\n types.forEach((type) => {\n const token = tokens[type];\n if (token) {\n validateToken(token, type);\n }\n });\n \n // add token to storage\n const storage = types.reduce((storage, type) => {\n const token = tokens[type];\n if (token) {\n const storageKey = this.getStorageKeyByType(type) || type;\n storage[storageKey] = token;\n }\n return storage;\n }, {});\n this.storage.setStorage(storage);\n this.emitSetStorageEvent();\n\n // emit event and start expiration timer\n types.forEach(type => {\n const newToken = tokens[type];\n const existingToken = existingTokens[type];\n const storageKey = this.getStorageKeyByType(type) || type;\n if (newToken && existingToken) { // renew\n // call handleRemoved first, since it clears timers\n handleRemoved(storageKey, existingToken);\n handleAdded(storageKey, newToken);\n handleRenewed(storageKey, newToken, existingToken);\n } else if (newToken) { // add\n handleAdded(storageKey, newToken);\n } else if (existingToken) { //remove\n handleRemoved(storageKey, existingToken);\n }\n });\n }\n \n remove(key) {\n // Clear any listener for this token\n this.clearExpireEventTimeout(key);\n \n var tokenStorage = this.storage.getStorage();\n var removedToken = tokenStorage[key];\n delete tokenStorage[key];\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n \n this.emitRemoved(key, removedToken);\n }\n \n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n async renewToken(token) {\n return this.sdk.token?.renew(token);\n }\n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n validateToken(token: Token) {\n return validateToken(token);\n }\n\n // TODO: renew method should take no param, change in the next major version OKTA-407224\n renew(key): Promise<Token | undefined> {\n // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n if (this.state.renewPromise) {\n return this.state.renewPromise;\n }\n \n try {\n var token = this.getSync(key);\n if (!token) {\n throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n .then(tokens => {\n this.setTokens(tokens);\n\n // resolve token based on the key\n const tokenType = this.getTokenType(token);\n return tokens[tokenType];\n })\n .catch(err => {\n // If renew fails, remove token from storage and emit error\n this.remove(key);\n err.tokenKey = key;\n this.emitError(err);\n throw err;\n })\n .finally(() => {\n // Remove existing promise key\n this.state.renewPromise = null;\n });\n \n return renewPromise;\n }\n \n clear() {\n const tokens = this.getTokensSync();\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n this.emitSetStorageEvent();\n\n Object.keys(tokens).forEach(key => {\n this.emitRemoved(key, tokens[key]);\n });\n }\n\n clearPendingRemoveTokens() {\n const tokenStorage = this.storage.getStorage();\n const removedTokens = {};\n Object.keys(tokenStorage).forEach(key => {\n if (tokenStorage[key].pendingRemove) {\n removedTokens[key] = tokenStorage[key];\n delete tokenStorage[key];\n }\n });\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n Object.keys(removedTokens).forEach(key => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, removedTokens[key]);\n });\n }\n\n updateRefreshToken(token: RefreshToken) {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n // do not emit any event\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n }\n\n removeRefreshToken () {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n this.remove(key);\n }\n\n addPendingRemoveFlags() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n tokens[key].pendingRemove = true;\n });\n this.setTokens(tokens);\n }\n \n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenManager.js","names":["DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","storage","undefined","expireEarlySeconds","storageKey","TOKEN_STORAGE_NAME","defaultState","expireTimeouts","renewPromise","TokenManager","on","event","handler","context","emitter","off","constructor","sdk","options","AuthSdkError","Object","assign","removeNils","isLocalhost","storageOptions","secure","storageProvider","storageType","storageManager","getTokenStorage","useSeparateCookies","clock","SdkClock","create","state","start","setExpireEventTimeoutAll","stop","clearExpireEventTimeoutAll","getOptions","clone","getExpireTime","token","expireTime","expiresAt","hasExpired","now","emitExpired","key","emit","EVENT_EXPIRED","emitRenewed","freshToken","oldToken","EVENT_RENEWED","emitAdded","EVENT_ADDED","emitRemoved","EVENT_REMOVED","emitError","error","EVENT_ERROR","clearExpireEventTimeout","clearTimeout","prototype","hasOwnProperty","call","setExpireEventTimeout","isRefreshToken","expireEventWait","Math","max","expireEventTimeout","setTimeout","tokenStorage","getStorage","resetExpireEventTimeoutAll","add","validateToken","setStorage","emitSetStorageEvent","getSync","get","getTokensSync","tokens","keys","forEach","isAccessToken","accessToken","isIDToken","idToken","refreshToken","getTokens","getStorageKeyByType","type","filter","getTokenType","isIE11OrLess","EVENT_SET_STORAGE","setTokens","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","types","existingTokens","reduce","newToken","existingToken","remove","removedToken","renewToken","renew","e","Promise","reject","renewTokens","then","tokenType","catch","err","tokenKey","finally","clear","clearStorage","removedTokens","pendingRemove","updateRefreshToken","REFRESH_TOKEN_STORAGE_KEY","removeRefreshToken","addPendingRemoveFlags"],"sources":["../../../lib/oidc/TokenManager.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n TokenManagerErrorEventHandler,\n TokenManagerSetStorageEventHandler,\n TokenManagerRenewEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback,\n EVENT_RENEWED,\n EVENT_ADDED,\n EVENT_ERROR,\n EVENT_EXPIRED,\n EVENT_REMOVED,\n EVENT_SET_STORAGE,\n TokenManagerAnyEventHandler,\n TokenManagerAnyEvent,\n OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n // TODO: remove in next major version - OKTA-473815\n autoRenew: true,\n autoRemove: true,\n syncStorage: true,\n // --- //\n clearPendingRemoveTokens: true,\n storage: undefined, // will use value from storageManager config\n expireEarlySeconds: 30,\n storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n expireTimeouts: Record<string, unknown>;\n renewPromise: Promise<Token | undefined> | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthOAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler: TokenManagerEventHandler, context?: object): void;\n on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n if (context) {\n this.emitter.on(event, handler, context);\n } else {\n this.emitter.on(event, handler);\n }\n }\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler?: TokenManagerEventHandler): void;\n off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n if (handler) {\n this.emitter.off(event, handler);\n } else {\n this.emitter.off(event);\n }\n }\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n this.sdk = sdk;\n this.emitter = (sdk as any).emitter;\n if (!this.emitter) {\n throw new AuthSdkError('Emitter should be initialized before TokenManager');\n }\n \n options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n if (!isLocalhost()) {\n options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n }\n\n this.options = options;\n\n const storageOptions: StorageOptions = removeNils({\n storageKey: options.storageKey,\n secure: options.secure,\n });\n if (typeof options.storage === 'object') {\n // A custom storage provider must implement getItem(key) and setItem(key, val)\n storageOptions.storageProvider = options.storage;\n } else if (options.storage) {\n storageOptions.storageType = options.storage as StorageType;\n }\n\n this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n this.clock = SdkClock.create(/* sdk, options */);\n this.state = defaultState();\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n clearExpireEventTimeout(key) {\n clearTimeout(this.state.expireTimeouts[key] as any);\n delete this.state.expireTimeouts[key];\n \n // Remove the renew promise (if it exists)\n this.state.renewPromise = null;\n }\n \n clearExpireEventTimeoutAll() {\n var expireTimeouts = this.state.expireTimeouts;\n for (var key in expireTimeouts) {\n if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n continue;\n }\n this.clearExpireEventTimeout(key);\n }\n }\n \n setExpireEventTimeout(key, token) {\n if (isRefreshToken(token)) {\n return;\n }\n\n var expireTime = this.getExpireTime(token);\n var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n \n // Clear any existing timeout\n this.clearExpireEventTimeout(key);\n \n var expireEventTimeout = setTimeout(() => {\n this.emitExpired(key, token);\n }, expireEventWait);\n \n // Add a new timeout\n this.state.expireTimeouts[key] = expireEventTimeout;\n }\n \n setExpireEventTimeoutAll() {\n var tokenStorage = this.storage.getStorage();\n for(var key in tokenStorage) {\n if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n continue;\n }\n var token = tokenStorage[key];\n this.setExpireEventTimeout(key, token);\n }\n }\n \n // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n resetExpireEventTimeoutAll() {\n this.clearExpireEventTimeoutAll();\n this.setExpireEventTimeoutAll();\n }\n \n add(key, token: Token) {\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key): Token {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise<Token> {\n return this.getSync(key);\n }\n \n getTokensSync(): Tokens {\n const tokens = {} as Tokens;\n const tokenStorage = this.storage.getStorage();\n Object.keys(tokenStorage).forEach(key => {\n const token = tokenStorage[key];\n if (isAccessToken(token)) {\n tokens.accessToken = token;\n } else if (isIDToken(token)) {\n tokens.idToken = token;\n } else if (isRefreshToken(token)) { \n tokens.refreshToken = token;\n }\n });\n return tokens;\n }\n \n async getTokens(): Promise<Tokens> {\n return this.getTokensSync();\n }\n\n getStorageKeyByType(type: TokenType): string {\n const tokenStorage = this.storage.getStorage();\n const key = Object.keys(tokenStorage).filter(key => {\n const token = tokenStorage[key];\n return (isAccessToken(token) && type === 'accessToken') \n || (isIDToken(token) && type === 'idToken')\n || (isRefreshToken(token) && type === 'refreshToken');\n })[0];\n return key;\n }\n\n private getTokenType(token: Token): TokenType {\n if (isAccessToken(token)) {\n return 'accessToken';\n }\n if (isIDToken(token)) {\n return 'idToken';\n }\n if(isRefreshToken(token)) {\n return 'refreshToken';\n }\n throw new AuthSdkError('Unknown token type');\n }\n\n // for synchronization of LocalStorage cross tabs for IE11\n private emitSetStorageEvent() {\n if (isIE11OrLess()) {\n const storage = this.storage.getStorage();\n this.emitter.emit(EVENT_SET_STORAGE, storage);\n }\n }\n\n // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n public getStorage() {\n return this.storage;\n }\n\n setTokens(\n tokens: Tokens,\n // TODO: callbacks can be removed in the next major version OKTA-407224\n accessTokenCb?: AccessTokenCallback, \n idTokenCb?: IDTokenCallback,\n refreshTokenCb?: RefreshTokenCallback\n ): void {\n const handleTokenCallback = (key, token) => {\n const type = this.getTokenType(token);\n if (type === 'accessToken') {\n accessTokenCb && accessTokenCb(key, token);\n } else if (type === 'idToken') {\n idTokenCb && idTokenCb(key, token);\n } else if (type === 'refreshToken') {\n refreshTokenCb && refreshTokenCb(key, token);\n }\n };\n const handleAdded = (key, token) => {\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRenewed = (key, token, oldToken) => {\n this.emitRenewed(key, token, oldToken);\n this.clearExpireEventTimeout(key);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRemoved = (key, token) => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, token);\n handleTokenCallback(key, token);\n };\n \n const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n const existingTokens = this.getTokensSync();\n\n // valid tokens\n types.forEach((type) => {\n const token = tokens[type];\n if (token) {\n validateToken(token, type);\n }\n });\n \n // add token to storage\n const storage = types.reduce((storage, type) => {\n const token = tokens[type];\n if (token) {\n const storageKey = this.getStorageKeyByType(type) || type;\n storage[storageKey] = token;\n }\n return storage;\n }, {});\n this.storage.setStorage(storage);\n this.emitSetStorageEvent();\n\n // emit event and start expiration timer\n types.forEach(type => {\n const newToken = tokens[type];\n const existingToken = existingTokens[type];\n const storageKey = this.getStorageKeyByType(type) || type;\n if (newToken && existingToken) { // renew\n // call handleRemoved first, since it clears timers\n handleRemoved(storageKey, existingToken);\n handleAdded(storageKey, newToken);\n handleRenewed(storageKey, newToken, existingToken);\n } else if (newToken) { // add\n handleAdded(storageKey, newToken);\n } else if (existingToken) { //remove\n handleRemoved(storageKey, existingToken);\n }\n });\n }\n \n remove(key) {\n // Clear any listener for this token\n this.clearExpireEventTimeout(key);\n \n var tokenStorage = this.storage.getStorage();\n var removedToken = tokenStorage[key];\n delete tokenStorage[key];\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n \n this.emitRemoved(key, removedToken);\n }\n \n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n async renewToken(token) {\n return this.sdk.token?.renew(token);\n }\n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n validateToken(token: Token) {\n return validateToken(token);\n }\n\n // TODO: renew method should take no param, change in the next major version OKTA-407224\n renew(key): Promise<Token | undefined> {\n // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n if (this.state.renewPromise) {\n return this.state.renewPromise;\n }\n \n try {\n var token = this.getSync(key);\n if (!token) {\n throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n .then(tokens => {\n this.setTokens(tokens);\n\n // resolve token based on the key\n const tokenType = this.getTokenType(token);\n return tokens[tokenType];\n })\n .catch(err => {\n // If renew fails, remove token from storage and emit error\n this.remove(key);\n err.tokenKey = key;\n this.emitError(err);\n throw err;\n })\n .finally(() => {\n // Remove existing promise key\n this.state.renewPromise = null;\n });\n \n return renewPromise;\n }\n \n clear() {\n const tokens = this.getTokensSync();\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n this.emitSetStorageEvent();\n\n Object.keys(tokens).forEach(key => {\n this.emitRemoved(key, tokens[key]);\n });\n }\n\n clearPendingRemoveTokens() {\n const tokenStorage = this.storage.getStorage();\n const removedTokens = {};\n Object.keys(tokenStorage).forEach(key => {\n if (tokenStorage[key].pendingRemove) {\n removedTokens[key] = tokenStorage[key];\n delete tokenStorage[key];\n }\n });\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n Object.keys(removedTokens).forEach(key => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, removedTokens[key]);\n });\n }\n\n updateRefreshToken(token: RefreshToken) {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n // do not emit any event\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n }\n\n removeRefreshToken () {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n this.remove(key);\n }\n\n addPendingRemoveFlags() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n tokens[key].pendingRemove = true;\n });\n this.setTokens(tokens);\n }\n \n}\n"],"mappings":"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"}
|