@aws-amplify/auth 6.7.1-unstable.ab33a03.0 → 6.8.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/dist/cjs/client/apis/associateWebAuthnCredential.js +62 -0
- package/dist/cjs/client/apis/associateWebAuthnCredential.js.map +1 -0
- package/dist/cjs/client/apis/deleteWebAuthnCredential.js +22 -0
- package/dist/cjs/client/apis/deleteWebAuthnCredential.js.map +1 -0
- package/dist/cjs/client/apis/index.js +13 -0
- package/dist/cjs/client/apis/index.js.map +1 -0
- package/dist/cjs/client/apis/listWebAuthnCredentials.js +23 -0
- package/dist/cjs/client/apis/listWebAuthnCredentials.js.map +1 -0
- package/dist/cjs/client/flows/shared/handlePasswordSRP.js +79 -0
- package/dist/cjs/client/flows/shared/handlePasswordSRP.js.map +1 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js +46 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js.map +1 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js +59 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js.map +1 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js +74 -0
- package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js.map +1 -0
- package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js +84 -0
- package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js.map +1 -0
- package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js +88 -0
- package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js.map +1 -0
- package/dist/cjs/client/utils/index.js +9 -0
- package/dist/cjs/client/utils/index.js.map +1 -0
- package/dist/cjs/client/utils/passkey/errors.js +180 -0
- package/dist/cjs/client/utils/passkey/errors.js.map +1 -0
- package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js +20 -0
- package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js.map +1 -0
- package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js +12 -0
- package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js.map +1 -0
- package/dist/cjs/client/utils/passkey/getPasskey.js +27 -0
- package/dist/cjs/client/utils/passkey/getPasskey.js.map +1 -0
- package/dist/cjs/client/utils/passkey/getPasskey.native.js +12 -0
- package/dist/cjs/client/utils/passkey/getPasskey.native.js.map +1 -0
- package/dist/cjs/client/utils/passkey/index.js +11 -0
- package/dist/cjs/client/utils/passkey/index.js.map +1 -0
- package/dist/cjs/client/utils/passkey/registerPasskey.js +32 -0
- package/dist/cjs/client/utils/passkey/registerPasskey.js.map +1 -0
- package/dist/cjs/client/utils/passkey/registerPasskey.native.js +12 -0
- package/dist/cjs/client/utils/passkey/registerPasskey.native.js.map +1 -0
- package/dist/cjs/client/utils/passkey/serde.js +106 -0
- package/dist/cjs/client/utils/passkey/serde.js.map +1 -0
- package/dist/cjs/client/utils/passkey/types/index.js +25 -0
- package/dist/cjs/client/utils/passkey/types/index.js.map +1 -0
- package/dist/cjs/client/utils/passkey/types/shared.js +18 -0
- package/dist/cjs/client/utils/passkey/types/shared.js.map +1 -0
- package/dist/cjs/client/utils/store/autoSignInStore.js +45 -0
- package/dist/cjs/client/utils/store/autoSignInStore.js.map +1 -0
- package/dist/cjs/client/utils/store/index.js +9 -0
- package/dist/cjs/client/utils/store/index.js.map +1 -0
- package/dist/cjs/client/utils/store/signInStore.js.map +1 -0
- package/dist/cjs/client/utils/store/types.js +6 -0
- package/dist/cjs/client/utils/store/types.js.map +1 -0
- package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js +33 -0
- package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js.map +1 -0
- package/dist/cjs/foundation/apis/index.js +11 -0
- package/dist/cjs/foundation/apis/index.js.map +1 -0
- package/dist/cjs/foundation/apis/listWebAuthnCredentials.js +46 -0
- package/dist/cjs/foundation/apis/listWebAuthnCredentials.js.map +1 -0
- package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js +21 -0
- package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js.map +1 -0
- package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js +17 -0
- package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js.map +1 -0
- package/dist/cjs/foundation/convert/base64url/index.js +11 -0
- package/dist/cjs/foundation/convert/base64url/index.js.map +1 -0
- package/dist/cjs/foundation/convert/index.js +10 -0
- package/dist/cjs/foundation/convert/index.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js +16 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js +16 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js +16 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js +33 -4
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js.map +1 -1
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js +16 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js +9 -1
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js.map +1 -1
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js +44 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js.map +1 -0
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js +3 -2
- package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js.map +1 -1
- package/dist/cjs/foundation/types/index.js +6 -0
- package/dist/cjs/foundation/types/index.js.map +1 -0
- package/dist/cjs/foundation/types/inputs.js +6 -0
- package/dist/cjs/foundation/types/inputs.js.map +1 -0
- package/dist/cjs/foundation/types/models.js +6 -0
- package/dist/cjs/foundation/types/models.js.map +1 -0
- package/dist/cjs/foundation/types/outputs.js +6 -0
- package/dist/cjs/foundation/types/outputs.js.map +1 -0
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/autoSignIn.js +6 -2
- package/dist/cjs/providers/cognito/apis/autoSignIn.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/confirmSignIn.js +4 -4
- package/dist/cjs/providers/cognito/apis/confirmSignIn.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/confirmSignUp.js +8 -5
- package/dist/cjs/providers/cognito/apis/confirmSignUp.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signIn.js +9 -0
- package/dist/cjs/providers/cognito/apis/signIn.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js +4 -4
- package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js +4 -4
- package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signInWithSRP.js +7 -4
- package/dist/cjs/providers/cognito/apis/signInWithSRP.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js +102 -0
- package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js.map +1 -0
- package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js +7 -4
- package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js.map +1 -1
- package/dist/cjs/providers/cognito/apis/signUp.js +56 -49
- package/dist/cjs/providers/cognito/apis/signUp.js.map +1 -1
- package/dist/cjs/providers/cognito/utils/signInHelpers.js +60 -42
- package/dist/cjs/providers/cognito/utils/signInHelpers.js.map +1 -1
- package/dist/cjs/providers/cognito/utils/signUpHelpers.js +5 -31
- package/dist/cjs/providers/cognito/utils/signUpHelpers.js.map +1 -1
- package/dist/esm/client/apis/associateWebAuthnCredential.d.ts +14 -0
- package/dist/esm/client/apis/associateWebAuthnCredential.mjs +69 -0
- package/dist/esm/client/apis/associateWebAuthnCredential.mjs.map +1 -0
- package/dist/esm/client/apis/deleteWebAuthnCredential.d.ts +11 -0
- package/dist/esm/client/apis/deleteWebAuthnCredential.mjs +29 -0
- package/dist/esm/client/apis/deleteWebAuthnCredential.mjs.map +1 -0
- package/dist/esm/client/apis/index.d.ts +3 -0
- package/dist/esm/client/apis/index.mjs +4 -0
- package/dist/esm/client/apis/index.mjs.map +1 -0
- package/dist/esm/client/apis/listWebAuthnCredentials.d.ts +12 -0
- package/dist/esm/client/apis/listWebAuthnCredentials.mjs +30 -0
- package/dist/esm/client/apis/listWebAuthnCredentials.mjs.map +1 -0
- package/dist/esm/client/flows/shared/handlePasswordSRP.d.ts +31 -0
- package/dist/esm/client/flows/shared/handlePasswordSRP.mjs +86 -0
- package/dist/esm/client/flows/shared/handlePasswordSRP.mjs.map +1 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallenge.d.ts +23 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs +51 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs.map +1 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.d.ts +16 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs +64 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs.map +1 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.d.ts +18 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs +81 -0
- package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs.map +1 -0
- package/dist/esm/client/flows/userAuth/handleUserAuthFlow.d.ts +27 -0
- package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs +88 -0
- package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs.map +1 -0
- package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.d.ts +3 -0
- package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs +93 -0
- package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs.map +1 -0
- package/dist/esm/client/utils/index.d.ts +1 -0
- package/dist/esm/client/utils/index.mjs +4 -0
- package/dist/esm/client/utils/index.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/errors.d.ts +33 -0
- package/dist/esm/client/utils/passkey/errors.mjs +176 -0
- package/dist/esm/client/utils/passkey/errors.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.d.ts +6 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs +18 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.d.ts +1 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs +10 -0
- package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/getPasskey.d.ts +2 -0
- package/dist/esm/client/utils/passkey/getPasskey.mjs +25 -0
- package/dist/esm/client/utils/passkey/getPasskey.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/getPasskey.native.d.ts +1 -0
- package/dist/esm/client/utils/passkey/getPasskey.native.mjs +10 -0
- package/dist/esm/client/utils/passkey/getPasskey.native.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/index.d.ts +2 -0
- package/dist/esm/client/utils/passkey/index.mjs +3 -0
- package/dist/esm/client/utils/passkey/index.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/registerPasskey.d.ts +7 -0
- package/dist/esm/client/utils/passkey/registerPasskey.mjs +30 -0
- package/dist/esm/client/utils/passkey/registerPasskey.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/registerPasskey.native.d.ts +1 -0
- package/dist/esm/client/utils/passkey/registerPasskey.native.mjs +10 -0
- package/dist/esm/client/utils/passkey/registerPasskey.native.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/serde.d.ts +25 -0
- package/dist/esm/client/utils/passkey/serde.mjs +102 -0
- package/dist/esm/client/utils/passkey/serde.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/types/index.d.ts +16 -0
- package/dist/esm/client/utils/passkey/types/index.mjs +18 -0
- package/dist/esm/client/utils/passkey/types/index.mjs.map +1 -0
- package/dist/esm/client/utils/passkey/types/shared.d.ts +106 -0
- package/dist/esm/client/utils/passkey/types/shared.mjs +16 -0
- package/dist/esm/client/utils/passkey/types/shared.mjs.map +1 -0
- package/dist/esm/client/utils/store/autoSignInStore.d.ts +21 -0
- package/dist/esm/client/utils/store/autoSignInStore.mjs +43 -0
- package/dist/esm/client/utils/store/autoSignInStore.mjs.map +1 -0
- package/dist/esm/client/utils/store/index.d.ts +2 -0
- package/dist/esm/client/utils/store/index.mjs +3 -0
- package/dist/esm/client/utils/store/index.mjs.map +1 -0
- package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.d.ts +1 -1
- package/dist/esm/client/utils/store/signInStore.mjs.map +1 -0
- package/dist/esm/client/utils/store/types.d.ts +5 -0
- package/dist/esm/client/utils/store/types.mjs +2 -0
- package/dist/esm/client/utils/store/types.mjs.map +1 -0
- package/dist/esm/foundation/apis/deleteWebAuthnCredential.d.ts +3 -0
- package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs +38 -0
- package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs.map +1 -0
- package/dist/esm/foundation/apis/index.d.ts +2 -0
- package/dist/esm/foundation/apis/index.mjs +3 -0
- package/dist/esm/foundation/apis/index.mjs.map +1 -0
- package/dist/esm/foundation/apis/listWebAuthnCredentials.d.ts +3 -0
- package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs +51 -0
- package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs.map +1 -0
- package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.d.ts +6 -0
- package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs +19 -0
- package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs.map +1 -0
- package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.d.ts +6 -0
- package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs +15 -0
- package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs.map +1 -0
- package/dist/esm/foundation/convert/base64url/index.d.ts +2 -0
- package/dist/esm/foundation/convert/base64url/index.mjs +3 -0
- package/dist/esm/foundation/convert/base64url/index.mjs.map +1 -0
- package/dist/esm/foundation/convert/index.d.ts +1 -0
- package/dist/esm/foundation/convert/index.mjs +3 -0
- package/dist/esm/foundation/convert/index.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.d.ts +13 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs +17 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.d.ts +13 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs +17 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.d.ts +13 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs +17 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.d.ts +3 -1
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs +32 -7
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs.map +1 -1
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.d.ts +13 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs +17 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.d.ts +4 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs +4 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs.map +1 -1
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.d.ts +1 -1
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.d.ts +37 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs +46 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs.map +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.d.ts +1 -0
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.mjs +1 -1
- package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.d.ts +109 -5
- package/dist/esm/foundation/types/index.d.ts +3 -0
- package/dist/esm/foundation/types/index.mjs +2 -0
- package/dist/esm/foundation/types/index.mjs.map +1 -0
- package/dist/esm/foundation/types/inputs.d.ts +10 -0
- package/dist/esm/foundation/types/inputs.mjs +2 -0
- package/dist/esm/foundation/types/inputs.mjs.map +1 -0
- package/dist/esm/foundation/types/models.d.ts +11 -0
- package/dist/esm/foundation/types/models.mjs +2 -0
- package/dist/esm/foundation/types/models.mjs.map +1 -0
- package/dist/esm/foundation/types/outputs.d.ts +8 -0
- package/dist/esm/foundation/types/outputs.mjs +2 -0
- package/dist/esm/foundation/types/outputs.mjs.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/autoSignIn.d.ts +1 -1
- package/dist/esm/providers/cognito/apis/autoSignIn.mjs +7 -2
- package/dist/esm/providers/cognito/apis/autoSignIn.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs +2 -0
- package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/confirmSignIn.mjs +2 -1
- package/dist/esm/providers/cognito/apis/confirmSignIn.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/confirmSignUp.mjs +11 -5
- package/dist/esm/providers/cognito/apis/confirmSignUp.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs +2 -0
- package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/deleteUser.mjs +3 -0
- package/dist/esm/providers/cognito/apis/deleteUser.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs +3 -0
- package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/fetchDevices.mjs +3 -0
- package/dist/esm/providers/cognito/apis/fetchDevices.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs +3 -0
- package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/forgetDevice.mjs +3 -0
- package/dist/esm/providers/cognito/apis/forgetDevice.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs +3 -0
- package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/rememberDevice.mjs +3 -0
- package/dist/esm/providers/cognito/apis/rememberDevice.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs +2 -0
- package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/resetPassword.mjs +2 -0
- package/dist/esm/providers/cognito/apis/resetPassword.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs +3 -0
- package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/setUpTOTP.mjs +2 -0
- package/dist/esm/providers/cognito/apis/setUpTOTP.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signIn.mjs +9 -0
- package/dist/esm/providers/cognito/apis/signIn.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs +2 -1
- package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs +2 -1
- package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signInWithSRP.mjs +5 -1
- package/dist/esm/providers/cognito/apis/signInWithSRP.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signInWithUserAuth.d.ts +13 -0
- package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs +104 -0
- package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs.map +1 -0
- package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs +6 -2
- package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signOut.mjs +2 -0
- package/dist/esm/providers/cognito/apis/signOut.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/signUp.mjs +58 -50
- package/dist/esm/providers/cognito/apis/signUp.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs +3 -0
- package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/updatePassword.mjs +2 -0
- package/dist/esm/providers/cognito/apis/updatePassword.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs +3 -0
- package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs.map +1 -1
- package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs +2 -0
- package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs.map +1 -1
- package/dist/esm/providers/cognito/types/index.d.ts +2 -2
- package/dist/esm/providers/cognito/types/inputs.d.ts +4 -0
- package/dist/esm/providers/cognito/types/models.d.ts +7 -1
- package/dist/esm/providers/cognito/types/options.d.ts +2 -1
- package/dist/esm/providers/cognito/types/outputs.d.ts +4 -0
- package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs +3 -0
- package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs.map +1 -1
- package/dist/esm/providers/cognito/utils/signInHelpers.d.ts +2 -1
- package/dist/esm/providers/cognito/utils/signInHelpers.mjs +56 -37
- package/dist/esm/providers/cognito/utils/signInHelpers.mjs.map +1 -1
- package/dist/esm/providers/cognito/utils/signUpHelpers.d.ts +0 -6
- package/dist/esm/providers/cognito/utils/signUpHelpers.mjs +5 -26
- package/dist/esm/providers/cognito/utils/signUpHelpers.mjs.map +1 -1
- package/dist/esm/types/inputs.d.ts +2 -2
- package/dist/esm/types/models.d.ts +9 -1
- package/package.json +104 -104
- package/src/client/apis/associateWebAuthnCredential.ts +94 -0
- package/src/client/apis/deleteWebAuthnCredential.ts +24 -0
- package/src/client/apis/index.ts +6 -0
- package/src/client/apis/listWebAuthnCredentials.ts +28 -0
- package/src/client/flows/shared/handlePasswordSRP.ts +123 -0
- package/src/client/flows/userAuth/handleSelectChallenge.ts +62 -0
- package/src/client/flows/userAuth/handleSelectChallengeWithPassword.ts +74 -0
- package/src/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.ts +105 -0
- package/src/client/flows/userAuth/handleUserAuthFlow.ts +125 -0
- package/src/client/flows/userAuth/handleWebAuthnSignInResult.ts +130 -0
- package/src/client/utils/index.ts +4 -0
- package/src/client/utils/passkey/errors.ts +214 -0
- package/src/client/utils/passkey/getIsPasskeySupported.native.ts +8 -0
- package/src/client/utils/passkey/getIsPasskeySupported.ts +18 -0
- package/src/client/utils/passkey/getPasskey.native.ts +8 -0
- package/src/client/utils/passkey/getPasskey.ts +40 -0
- package/src/client/utils/passkey/index.ts +5 -0
- package/src/client/utils/passkey/registerPasskey.native.ts +8 -0
- package/src/client/utils/passkey/registerPasskey.ts +48 -0
- package/src/client/utils/passkey/serde.ts +151 -0
- package/src/client/utils/passkey/types/index.ts +61 -0
- package/src/client/utils/passkey/types/shared.ts +131 -0
- package/src/client/utils/store/autoSignInStore.ts +64 -0
- package/src/client/utils/store/index.ts +5 -0
- package/src/{providers/cognito/utils → client/utils/store}/signInStore.ts +3 -8
- package/src/client/utils/store/types.ts +9 -0
- package/src/foundation/apis/deleteWebAuthnCredential.ts +45 -0
- package/src/foundation/apis/index.ts +5 -0
- package/src/foundation/apis/listWebAuthnCredentials.ts +68 -0
- package/src/foundation/convert/base64url/convertArrayBufferToBase64Url.ts +18 -0
- package/src/foundation/convert/base64url/convertBase64UrlToArrayBuffer.ts +18 -0
- package/src/foundation/convert/base64url/index.ts +5 -0
- package/src/foundation/convert/index.ts +7 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.ts +31 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.ts +31 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.ts +31 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.ts +44 -7
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.ts +31 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/index.ts +4 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.ts +5 -1
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.ts +43 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.ts +2 -0
- package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.ts +141 -5
- package/src/foundation/types/index.ts +9 -0
- package/src/foundation/types/inputs.ts +14 -0
- package/src/foundation/types/models.ts +14 -0
- package/src/foundation/types/outputs.ts +12 -0
- package/src/index.ts +14 -0
- package/src/providers/cognito/apis/autoSignIn.ts +6 -2
- package/src/providers/cognito/apis/confirmSignIn.ts +1 -1
- package/src/providers/cognito/apis/confirmSignUp.ts +10 -9
- package/src/providers/cognito/apis/signIn.ts +10 -0
- package/src/providers/cognito/apis/signInWithCustomAuth.ts +1 -1
- package/src/providers/cognito/apis/signInWithCustomSRPAuth.ts +1 -1
- package/src/providers/cognito/apis/signInWithSRP.ts +6 -1
- package/src/providers/cognito/apis/signInWithUserAuth.ts +141 -0
- package/src/providers/cognito/apis/signInWithUserPassword.ts +7 -2
- package/src/providers/cognito/apis/signUp.ts +81 -72
- package/src/providers/cognito/types/index.ts +2 -0
- package/src/providers/cognito/types/inputs.ts +5 -0
- package/src/providers/cognito/types/models.ts +13 -0
- package/src/providers/cognito/types/options.ts +7 -1
- package/src/providers/cognito/types/outputs.ts +5 -0
- package/src/providers/cognito/utils/signInHelpers.ts +77 -55
- package/src/providers/cognito/utils/signUpHelpers.ts +6 -31
- package/src/types/inputs.ts +2 -2
- package/src/types/models.ts +13 -0
- package/dist/cjs/providers/cognito/utils/signInStore.js.map +0 -1
- package/dist/esm/providers/cognito/utils/signInStore.mjs.map +0 -1
- /package/dist/cjs/{providers/cognito/utils → client/utils/store}/signInStore.js +0 -0
- /package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.mjs +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { AuthAction } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
3
|
+
import '@aws-amplify/core/internals/aws-client-utils';
|
|
4
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/shared/handler/cognitoUserPoolTransferHandler.mjs';
|
|
5
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/constants.mjs';
|
|
6
|
+
import '../../../common/AuthErrorStrings.mjs';
|
|
7
|
+
import '../../../errors/types/validation.mjs';
|
|
8
|
+
import '../../../providers/cognito/types/errors.mjs';
|
|
9
|
+
import { createRespondToAuthChallengeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/createRespondToAuthChallengeClient.mjs';
|
|
10
|
+
import { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories/createCognitoUserPoolEndpointResolver.mjs';
|
|
11
|
+
import { getRegionFromUserPoolId } from '../../../foundation/parsers/regionParsers.mjs';
|
|
12
|
+
import { getAuthUserAgentValue } from '../../../utils/getAuthUserAgentValue.mjs';
|
|
13
|
+
import { getAuthenticationHelper } from '../../../providers/cognito/utils/srp/getAuthenticationHelper.mjs';
|
|
14
|
+
import '../../../providers/cognito/utils/srp/constants.mjs';
|
|
15
|
+
import '@aws-crypto/sha256-js';
|
|
16
|
+
import { getUserContextData } from '../../../providers/cognito/utils/userContextData.mjs';
|
|
17
|
+
import { setActiveSignInUsername, retryOnResourceNotFoundException, handlePasswordVerifierChallenge } from '../../../providers/cognito/utils/signInHelpers.mjs';
|
|
18
|
+
|
|
19
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
20
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
/**
|
|
22
|
+
* Handles the SELECT_CHALLENGE response specifically for Password SRP authentication.
|
|
23
|
+
* This function combines the SELECT_CHALLENGE flow with Password SRP protocol.
|
|
24
|
+
*
|
|
25
|
+
* @param {string} username - The username for authentication
|
|
26
|
+
* @param {string} password - The user's password
|
|
27
|
+
* @param {ClientMetadata} [clientMetadata] - Optional metadata to be sent with auth requests
|
|
28
|
+
* @param {CognitoUserPoolConfig} config - Cognito User Pool configuration
|
|
29
|
+
* @param {string} session - The current authentication session token
|
|
30
|
+
* @param {AuthTokenOrchestrator} tokenOrchestrator - Token orchestrator for managing auth tokens
|
|
31
|
+
*
|
|
32
|
+
* @returns {Promise<RespondToAuthChallengeCommandOutput>} The challenge response
|
|
33
|
+
*/
|
|
34
|
+
async function handleSelectChallengeWithPasswordSRP(username, password, clientMetadata, config, session, tokenOrchestrator) {
|
|
35
|
+
const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
|
|
36
|
+
const userPoolName = userPoolId.split('_')[1] || '';
|
|
37
|
+
const authenticationHelper = await getAuthenticationHelper(userPoolName);
|
|
38
|
+
const authParameters = {
|
|
39
|
+
ANSWER: 'PASSWORD_SRP',
|
|
40
|
+
USERNAME: username,
|
|
41
|
+
SRP_A: authenticationHelper.A.toString(16),
|
|
42
|
+
};
|
|
43
|
+
const userContextData = getUserContextData({
|
|
44
|
+
username,
|
|
45
|
+
userPoolId,
|
|
46
|
+
userPoolClientId,
|
|
47
|
+
});
|
|
48
|
+
const respondToAuthChallenge = createRespondToAuthChallengeClient({
|
|
49
|
+
endpointResolver: createCognitoUserPoolEndpointResolver({
|
|
50
|
+
endpointOverride: userPoolEndpoint,
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
53
|
+
const response = await respondToAuthChallenge({
|
|
54
|
+
region: getRegionFromUserPoolId(userPoolId),
|
|
55
|
+
userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),
|
|
56
|
+
}, {
|
|
57
|
+
ChallengeName: 'SELECT_CHALLENGE',
|
|
58
|
+
ChallengeResponses: authParameters,
|
|
59
|
+
ClientId: userPoolClientId,
|
|
60
|
+
ClientMetadata: clientMetadata,
|
|
61
|
+
Session: session,
|
|
62
|
+
UserContextData: userContextData,
|
|
63
|
+
});
|
|
64
|
+
const activeUsername = response.ChallengeParameters?.USERNAME ?? username;
|
|
65
|
+
setActiveSignInUsername(activeUsername);
|
|
66
|
+
if (response.ChallengeName === 'PASSWORD_VERIFIER') {
|
|
67
|
+
return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [
|
|
68
|
+
password,
|
|
69
|
+
response.ChallengeParameters,
|
|
70
|
+
clientMetadata,
|
|
71
|
+
response.Session,
|
|
72
|
+
authenticationHelper,
|
|
73
|
+
config,
|
|
74
|
+
tokenOrchestrator,
|
|
75
|
+
], activeUsername, tokenOrchestrator);
|
|
76
|
+
}
|
|
77
|
+
return response;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { handleSelectChallengeWithPasswordSRP };
|
|
81
|
+
//# sourceMappingURL=handleSelectChallengeWithPasswordSRP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleSelectChallengeWithPasswordSRP.mjs","sources":["../../../../../src/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { createRespondToAuthChallengeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getAuthenticationHelper } from '../../../providers/cognito/utils/srp';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { handlePasswordVerifierChallenge, retryOnResourceNotFoundException, setActiveSignInUsername, } from '../../../providers/cognito/utils/signInHelpers';\n/**\n * Handles the SELECT_CHALLENGE response specifically for Password SRP authentication.\n * This function combines the SELECT_CHALLENGE flow with Password SRP protocol.\n *\n * @param {string} username - The username for authentication\n * @param {string} password - The user's password\n * @param {ClientMetadata} [clientMetadata] - Optional metadata to be sent with auth requests\n * @param {CognitoUserPoolConfig} config - Cognito User Pool configuration\n * @param {string} session - The current authentication session token\n * @param {AuthTokenOrchestrator} tokenOrchestrator - Token orchestrator for managing auth tokens\n *\n * @returns {Promise<RespondToAuthChallengeCommandOutput>} The challenge response\n */\nexport async function handleSelectChallengeWithPasswordSRP(username, password, clientMetadata, config, session, tokenOrchestrator) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const authParameters = {\n ANSWER: 'PASSWORD_SRP',\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n };\n const userContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n ChallengeName: 'SELECT_CHALLENGE',\n ChallengeResponses: authParameters,\n ClientId: userPoolClientId,\n ClientMetadata: clientMetadata,\n Session: session,\n UserContextData: userContextData,\n });\n const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'PASSWORD_VERIFIER') {\n return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [\n password,\n response.ChallengeParameters,\n clientMetadata,\n response.Session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n }\n return response;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACnI,IAAI,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;AACtE,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxD,IAAI,MAAM,oBAAoB,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC7E,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,EAAE,cAAc;AAC9B,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClD,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC/C,QAAQ,QAAQ;AAChB,QAAQ,UAAU;AAClB,QAAQ,gBAAgB;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AACtE,QAAQ,gBAAgB,EAAE,qCAAqC,CAAC;AAChE,YAAY,gBAAgB,EAAE,gBAAgB;AAC9C,SAAS,CAAC;AACV,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;AAClD,QAAQ,MAAM,EAAE,uBAAuB,CAAC,UAAU,CAAC;AACnD,QAAQ,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC;AACvE,KAAK,EAAE;AACP,QAAQ,aAAa,EAAE,kBAAkB;AACzC,QAAQ,kBAAkB,EAAE,cAAc;AAC1C,QAAQ,QAAQ,EAAE,gBAAgB;AAClC,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,eAAe,EAAE,eAAe;AACxC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,IAAI,QAAQ,CAAC;AAC9E,IAAI,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC5C,IAAI,IAAI,QAAQ,CAAC,aAAa,KAAK,mBAAmB,EAAE;AACxD,QAAQ,OAAO,gCAAgC,CAAC,+BAA+B,EAAE;AACjF,YAAY,QAAQ;AACpB,YAAY,QAAQ,CAAC,mBAAmB;AACxC,YAAY,cAAc;AAC1B,YAAY,QAAQ,CAAC,OAAO;AAC5B,YAAY,oBAAoB;AAChC,YAAY,MAAM;AAClB,YAAY,iBAAiB;AAC7B,SAAS,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CognitoUserPoolConfig } from '@aws-amplify/core';
|
|
2
|
+
import { AuthTokenOrchestrator } from '../../../providers/cognito/tokenProvider/types';
|
|
3
|
+
import { AuthFactorType } from '../../../providers/cognito/types/models';
|
|
4
|
+
export interface HandleUserAuthFlowInput {
|
|
5
|
+
username: string;
|
|
6
|
+
config: CognitoUserPoolConfig;
|
|
7
|
+
tokenOrchestrator: AuthTokenOrchestrator;
|
|
8
|
+
clientMetadata?: Record<string, string>;
|
|
9
|
+
preferredChallenge?: AuthFactorType;
|
|
10
|
+
password?: string;
|
|
11
|
+
session?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Handles user authentication flow with configurable challenge preferences.
|
|
15
|
+
* Supports AuthFactorType challenges through the USER_AUTH flow.
|
|
16
|
+
*
|
|
17
|
+
* @param {HandleUserAuthFlowInput} params - Authentication flow parameters
|
|
18
|
+
* @param {string} params.username - The username for authentication
|
|
19
|
+
* @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service
|
|
20
|
+
* @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration
|
|
21
|
+
* @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking
|
|
22
|
+
* @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method
|
|
23
|
+
* @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'
|
|
24
|
+
*
|
|
25
|
+
* @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito
|
|
26
|
+
*/
|
|
27
|
+
export declare function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }: HandleUserAuthFlowInput): Promise<import("../../../foundation/factories/serviceClients/cognitoIdentityProvider/types").RespondToAuthChallengeCommandOutput>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { AuthAction } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
import { getUserContextData } from '../../../providers/cognito/utils/userContextData.mjs';
|
|
3
|
+
import { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/createInitiateAuthClient.mjs';
|
|
4
|
+
import '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
5
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/shared/handler/cognitoUserPoolTransferHandler.mjs';
|
|
6
|
+
import '@aws-amplify/core/internals/aws-client-utils';
|
|
7
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/constants.mjs';
|
|
8
|
+
import '../../../common/AuthErrorStrings.mjs';
|
|
9
|
+
import { AuthValidationErrorCode } from '../../../errors/types/validation.mjs';
|
|
10
|
+
import '../../../providers/cognito/types/errors.mjs';
|
|
11
|
+
import { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories/createCognitoUserPoolEndpointResolver.mjs';
|
|
12
|
+
import { getRegionFromUserPoolId } from '../../../foundation/parsers/regionParsers.mjs';
|
|
13
|
+
import { getAuthUserAgentValue } from '../../../utils/getAuthUserAgentValue.mjs';
|
|
14
|
+
import { handlePasswordSRP } from '../shared/handlePasswordSRP.mjs';
|
|
15
|
+
import { assertValidationError } from '../../../errors/utils/assertValidationError.mjs';
|
|
16
|
+
import { setActiveSignInUsername } from '../../../providers/cognito/utils/signInHelpers.mjs';
|
|
17
|
+
|
|
18
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
19
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
20
|
+
/**
|
|
21
|
+
* Handles user authentication flow with configurable challenge preferences.
|
|
22
|
+
* Supports AuthFactorType challenges through the USER_AUTH flow.
|
|
23
|
+
*
|
|
24
|
+
* @param {HandleUserAuthFlowInput} params - Authentication flow parameters
|
|
25
|
+
* @param {string} params.username - The username for authentication
|
|
26
|
+
* @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service
|
|
27
|
+
* @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration
|
|
28
|
+
* @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking
|
|
29
|
+
* @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method
|
|
30
|
+
* @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'
|
|
31
|
+
*
|
|
32
|
+
* @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito
|
|
33
|
+
*/
|
|
34
|
+
async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {
|
|
35
|
+
const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
|
|
36
|
+
const UserContextData = getUserContextData({
|
|
37
|
+
username,
|
|
38
|
+
userPoolId,
|
|
39
|
+
userPoolClientId,
|
|
40
|
+
});
|
|
41
|
+
const authParameters = { USERNAME: username };
|
|
42
|
+
if (preferredChallenge) {
|
|
43
|
+
if (preferredChallenge === 'PASSWORD_SRP') {
|
|
44
|
+
assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);
|
|
45
|
+
return handlePasswordSRP({
|
|
46
|
+
username,
|
|
47
|
+
password,
|
|
48
|
+
clientMetadata,
|
|
49
|
+
config,
|
|
50
|
+
tokenOrchestrator,
|
|
51
|
+
authFlow: 'USER_AUTH',
|
|
52
|
+
preferredChallenge,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (preferredChallenge === 'PASSWORD') {
|
|
56
|
+
assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);
|
|
57
|
+
authParameters.PASSWORD = password;
|
|
58
|
+
}
|
|
59
|
+
authParameters.PREFERRED_CHALLENGE = preferredChallenge;
|
|
60
|
+
}
|
|
61
|
+
const jsonReq = {
|
|
62
|
+
AuthFlow: 'USER_AUTH',
|
|
63
|
+
AuthParameters: authParameters,
|
|
64
|
+
ClientMetadata: clientMetadata,
|
|
65
|
+
ClientId: userPoolClientId,
|
|
66
|
+
UserContextData,
|
|
67
|
+
};
|
|
68
|
+
if (session) {
|
|
69
|
+
jsonReq.Session = session;
|
|
70
|
+
}
|
|
71
|
+
const initiateAuth = createInitiateAuthClient({
|
|
72
|
+
endpointResolver: createCognitoUserPoolEndpointResolver({
|
|
73
|
+
endpointOverride: userPoolEndpoint,
|
|
74
|
+
}),
|
|
75
|
+
});
|
|
76
|
+
const response = await initiateAuth({
|
|
77
|
+
region: getRegionFromUserPoolId(userPoolId),
|
|
78
|
+
userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),
|
|
79
|
+
}, jsonReq);
|
|
80
|
+
// Set the active username immediately after successful authentication attempt
|
|
81
|
+
// If a user starts a new sign-in while another sign-in is incomplete,
|
|
82
|
+
// this ensures we're tracking the correct user for subsequent auth challenges.
|
|
83
|
+
setActiveSignInUsername(username);
|
|
84
|
+
return response;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { handleUserAuthFlow };
|
|
88
|
+
//# sourceMappingURL=handleUserAuthFlow.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleUserAuthFlow.mjs","sources":["../../../../../src/client/flows/userAuth/handleUserAuthFlow.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AuthAction } from '@aws-amplify/core/internals/utils';\nimport { getUserContextData } from '../../../providers/cognito/utils/userContextData';\nimport { createInitiateAuthClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { handlePasswordSRP } from '../shared/handlePasswordSRP';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { setActiveSignInUsername } from '../../../providers/cognito/utils/signInHelpers';\n/**\n * Handles user authentication flow with configurable challenge preferences.\n * Supports AuthFactorType challenges through the USER_AUTH flow.\n *\n * @param {HandleUserAuthFlowInput} params - Authentication flow parameters\n * @param {string} params.username - The username for authentication\n * @param {Record<string, string>} [params.clientMetadata] - Optional metadata to pass to authentication service\n * @param {CognitoUserPoolConfig} params.config - Cognito User Pool configuration\n * @param {AuthTokenOrchestrator} params.tokenOrchestrator - Manages authentication tokens and device tracking\n * @param {AuthFactorType} [params.preferredChallenge] - Optional preferred authentication method\n * @param {string} [params.password] - Required when preferredChallenge is 'PASSWORD' or 'PASSWORD_SRP'\n *\n * @returns {Promise<InitiateAuthCommandOutput>} The authentication response from Cognito\n */\nexport async function handleUserAuthFlow({ username, clientMetadata, config, tokenOrchestrator, preferredChallenge, password, session, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const authParameters = { USERNAME: username };\n if (preferredChallenge) {\n if (preferredChallenge === 'PASSWORD_SRP') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_AUTH',\n preferredChallenge,\n });\n }\n if (preferredChallenge === 'PASSWORD') {\n assertValidationError(!!password, AuthValidationErrorCode.EmptySignInPassword);\n authParameters.PASSWORD = password;\n }\n authParameters.PREFERRED_CHALLENGE = preferredChallenge;\n }\n const jsonReq = {\n AuthFlow: 'USER_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n if (session) {\n jsonReq.Session = session;\n }\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n // Set the active username immediately after successful authentication attempt\n // If a user starts a new sign-in while another sign-in is incomplete,\n // this ensures we're tracking the correct user for subsequent auth challenges.\n setActiveSignInUsername(username);\n return response;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,kBAAkB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE;AAC1I,IAAI,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;AACtE,IAAI,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC/C,QAAQ,QAAQ;AAChB,QAAQ,UAAU;AAClB,QAAQ,gBAAgB;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClD,IAAI,IAAI,kBAAkB,EAAE;AAC5B,QAAQ,IAAI,kBAAkB,KAAK,cAAc,EAAE;AACnD,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;AAC3F,YAAY,OAAO,iBAAiB,CAAC;AACrC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B,gBAAgB,MAAM;AACtB,gBAAgB,iBAAiB;AACjC,gBAAgB,QAAQ,EAAE,WAAW;AACrC,gBAAgB,kBAAkB;AAClC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,kBAAkB,KAAK,UAAU,EAAE;AAC/C,YAAY,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;AAC3F,YAAY,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,SAAS;AACT,QAAQ,cAAc,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AAChE,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,QAAQ,EAAE,gBAAgB;AAClC,QAAQ,eAAe;AACvB,KAAK,CAAC;AACN,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAClC,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAClD,QAAQ,gBAAgB,EAAE,qCAAqC,CAAC;AAChE,YAAY,gBAAgB,EAAE,gBAAgB;AAC9C,SAAS,CAAC;AACV,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;AACxC,QAAQ,MAAM,EAAE,uBAAuB,CAAC,UAAU,CAAC;AACnD,QAAQ,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;AAChE,KAAK,EAAE,OAAO,CAAC,CAAC;AAChB;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACtC,IAAI,OAAO,QAAQ,CAAC;AACpB;;;;"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ChallengeParameters } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/types';
|
|
2
|
+
import { AuthSignInOutput } from '../../../types';
|
|
3
|
+
export declare function handleWebAuthnSignInResult(challengeParameters: ChallengeParameters): Promise<AuthSignInOutput>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Amplify } from '@aws-amplify/core';
|
|
2
|
+
import { assertTokenProviderConfig, AuthAction } from '@aws-amplify/core/internals/utils';
|
|
3
|
+
import { AuthErrorCodes } from '../../../common/AuthErrorStrings.mjs';
|
|
4
|
+
import '@aws-amplify/core/internals/aws-client-utils/composers';
|
|
5
|
+
import '@aws-amplify/core/internals/aws-client-utils';
|
|
6
|
+
import { AuthError } from '../../../errors/AuthError.mjs';
|
|
7
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/shared/handler/cognitoUserPoolTransferHandler.mjs';
|
|
8
|
+
import '../../../foundation/factories/serviceClients/cognitoIdentityProvider/constants.mjs';
|
|
9
|
+
import '../../../errors/types/validation.mjs';
|
|
10
|
+
import '../../../providers/cognito/types/errors.mjs';
|
|
11
|
+
import { createRespondToAuthChallengeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/createRespondToAuthChallengeClient.mjs';
|
|
12
|
+
import { getRegionFromUserPoolId } from '../../../foundation/parsers/regionParsers.mjs';
|
|
13
|
+
import { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories/createCognitoUserPoolEndpointResolver.mjs';
|
|
14
|
+
import { cacheCognitoTokens } from '../../../providers/cognito/tokenProvider/cacheTokens.mjs';
|
|
15
|
+
import { dispatchSignedInHubEvent } from '../../../providers/cognito/utils/dispatchSignedInHubEvent.mjs';
|
|
16
|
+
import { getNewDeviceMetadata, getSignInResult } from '../../../providers/cognito/utils/signInHelpers.mjs';
|
|
17
|
+
import '../../utils/store/autoSignInStore.mjs';
|
|
18
|
+
import { signInStore, setActiveSignInState, cleanActiveSignInState } from '../../utils/store/signInStore.mjs';
|
|
19
|
+
import { getAuthUserAgentValue } from '../../../utils/getAuthUserAgentValue.mjs';
|
|
20
|
+
import { assertPasskeyError, PasskeyErrorCode } from '../../utils/passkey/errors.mjs';
|
|
21
|
+
import { getPasskey } from '../../utils/passkey/getPasskey.mjs';
|
|
22
|
+
|
|
23
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
24
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
25
|
+
async function handleWebAuthnSignInResult(challengeParameters) {
|
|
26
|
+
const authConfig = Amplify.getConfig().Auth?.Cognito;
|
|
27
|
+
assertTokenProviderConfig(authConfig);
|
|
28
|
+
const { username, signInSession, signInDetails, challengeName } = signInStore.getState();
|
|
29
|
+
if (challengeName !== 'WEB_AUTHN' || !username) {
|
|
30
|
+
throw new AuthError({
|
|
31
|
+
name: AuthErrorCodes.SignInException,
|
|
32
|
+
message: 'Unable to proceed due to invalid sign in state.',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const { CREDENTIAL_REQUEST_OPTIONS: credentialRequestOptions } = challengeParameters;
|
|
36
|
+
assertPasskeyError(!!credentialRequestOptions, PasskeyErrorCode.InvalidPasskeyAuthenticationOptions);
|
|
37
|
+
const cred = await getPasskey(JSON.parse(credentialRequestOptions));
|
|
38
|
+
const respondToAuthChallenge = createRespondToAuthChallengeClient({
|
|
39
|
+
endpointResolver: createCognitoUserPoolEndpointResolver({
|
|
40
|
+
endpointOverride: authConfig.userPoolEndpoint,
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
const { ChallengeName: nextChallengeName, ChallengeParameters: nextChallengeParameters, AuthenticationResult: authenticationResult, Session: nextSession, } = await respondToAuthChallenge({
|
|
44
|
+
region: getRegionFromUserPoolId(authConfig.userPoolId),
|
|
45
|
+
userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),
|
|
46
|
+
}, {
|
|
47
|
+
ChallengeName: 'WEB_AUTHN',
|
|
48
|
+
ChallengeResponses: {
|
|
49
|
+
USERNAME: username,
|
|
50
|
+
CREDENTIAL: JSON.stringify(cred),
|
|
51
|
+
},
|
|
52
|
+
ClientId: authConfig.userPoolClientId,
|
|
53
|
+
Session: signInSession,
|
|
54
|
+
});
|
|
55
|
+
setActiveSignInState({
|
|
56
|
+
signInSession: nextSession,
|
|
57
|
+
username,
|
|
58
|
+
challengeName: nextChallengeName,
|
|
59
|
+
signInDetails,
|
|
60
|
+
});
|
|
61
|
+
if (authenticationResult) {
|
|
62
|
+
await cacheCognitoTokens({
|
|
63
|
+
...authenticationResult,
|
|
64
|
+
username,
|
|
65
|
+
NewDeviceMetadata: await getNewDeviceMetadata({
|
|
66
|
+
userPoolId: authConfig.userPoolId,
|
|
67
|
+
userPoolEndpoint: authConfig.userPoolEndpoint,
|
|
68
|
+
newDeviceMetadata: authenticationResult.NewDeviceMetadata,
|
|
69
|
+
accessToken: authenticationResult.AccessToken,
|
|
70
|
+
}),
|
|
71
|
+
signInDetails,
|
|
72
|
+
});
|
|
73
|
+
cleanActiveSignInState();
|
|
74
|
+
await dispatchSignedInHubEvent();
|
|
75
|
+
return {
|
|
76
|
+
isSignedIn: true,
|
|
77
|
+
nextStep: { signInStep: 'DONE' },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (nextChallengeName === 'WEB_AUTHN') {
|
|
81
|
+
throw new AuthError({
|
|
82
|
+
name: AuthErrorCodes.SignInException,
|
|
83
|
+
message: 'Sequential WEB_AUTHN challenges returned from underlying service cannot be handled.',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return getSignInResult({
|
|
87
|
+
challengeName: nextChallengeName,
|
|
88
|
+
challengeParameters: nextChallengeParameters,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { handleWebAuthnSignInResult };
|
|
93
|
+
//# sourceMappingURL=handleWebAuthnSignInResult.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleWebAuthnSignInResult.mjs","sources":["../../../../../src/client/flows/userAuth/handleWebAuthnSignInResult.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthErrorCodes } from '../../../common/AuthErrorStrings';\nimport { createRespondToAuthChallengeClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { createCognitoUserPoolEndpointResolver } from '../../../providers/cognito/factories';\nimport { cacheCognitoTokens } from '../../../providers/cognito/tokenProvider/cacheTokens';\nimport { dispatchSignedInHubEvent } from '../../../providers/cognito/utils/dispatchSignedInHubEvent';\nimport { getNewDeviceMetadata, getSignInResult, } from '../../../providers/cognito/utils/signInHelpers';\nimport { cleanActiveSignInState, setActiveSignInState, signInStore, } from '../../../client/utils/store';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { getPasskey } from '../../utils/passkey';\nimport { PasskeyErrorCode, assertPasskeyError, } from '../../utils/passkey/errors';\nimport { AuthError } from '../../../errors/AuthError';\nexport async function handleWebAuthnSignInResult(challengeParameters) {\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n const { username, signInSession, signInDetails, challengeName } = signInStore.getState();\n if (challengeName !== 'WEB_AUTHN' || !username) {\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'Unable to proceed due to invalid sign in state.',\n });\n }\n const { CREDENTIAL_REQUEST_OPTIONS: credentialRequestOptions } = challengeParameters;\n assertPasskeyError(!!credentialRequestOptions, PasskeyErrorCode.InvalidPasskeyAuthenticationOptions);\n const cred = await getPasskey(JSON.parse(credentialRequestOptions));\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { ChallengeName: nextChallengeName, ChallengeParameters: nextChallengeParameters, AuthenticationResult: authenticationResult, Session: nextSession, } = await respondToAuthChallenge({\n region: getRegionFromUserPoolId(authConfig.userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n ChallengeName: 'WEB_AUTHN',\n ChallengeResponses: {\n USERNAME: username,\n CREDENTIAL: JSON.stringify(cred),\n },\n ClientId: authConfig.userPoolClientId,\n Session: signInSession,\n });\n setActiveSignInState({\n signInSession: nextSession,\n username,\n challengeName: nextChallengeName,\n signInDetails,\n });\n if (authenticationResult) {\n await cacheCognitoTokens({\n ...authenticationResult,\n username,\n NewDeviceMetadata: await getNewDeviceMetadata({\n userPoolId: authConfig.userPoolId,\n userPoolEndpoint: authConfig.userPoolEndpoint,\n newDeviceMetadata: authenticationResult.NewDeviceMetadata,\n accessToken: authenticationResult.AccessToken,\n }),\n signInDetails,\n });\n cleanActiveSignInState();\n await dispatchSignedInHubEvent();\n return {\n isSignedIn: true,\n nextStep: { signInStep: 'DONE' },\n };\n }\n if (nextChallengeName === 'WEB_AUTHN') {\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'Sequential WEB_AUTHN challenges returned from underlying service cannot be handled.',\n });\n }\n return getSignInResult({\n challengeName: nextChallengeName,\n challengeParameters: nextChallengeParameters,\n });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerPasskey } from './passkey';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AmplifyError, AmplifyErrorParams, AssertionFunction } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
export declare class PasskeyError extends AmplifyError {
|
|
3
|
+
constructor(params: AmplifyErrorParams);
|
|
4
|
+
}
|
|
5
|
+
export declare enum PasskeyErrorCode {
|
|
6
|
+
PasskeyNotSupported = "PasskeyNotSupported",
|
|
7
|
+
PasskeyAlreadyExists = "PasskeyAlreadyExists",
|
|
8
|
+
InvalidPasskeyRegistrationOptions = "InvalidPasskeyRegistrationOptions",
|
|
9
|
+
InvalidPasskeyAuthenticationOptions = "InvalidPasskeyAuthenticationOptions",
|
|
10
|
+
RelyingPartyMismatch = "RelyingPartyMismatch",
|
|
11
|
+
PasskeyRegistrationFailed = "PasskeyRegistrationFailed",
|
|
12
|
+
PasskeyRetrievalFailed = "PasskeyRetrievalFailed",
|
|
13
|
+
PasskeyRegistrationCanceled = "PasskeyRegistrationCanceled",
|
|
14
|
+
PasskeyAuthenticationCanceled = "PasskeyAuthenticationCanceled",
|
|
15
|
+
PasskeyOperationAborted = "PasskeyOperationAborted"
|
|
16
|
+
}
|
|
17
|
+
export declare const assertPasskeyError: AssertionFunction<PasskeyErrorCode>;
|
|
18
|
+
/**
|
|
19
|
+
* Handle Passkey Authentication Errors
|
|
20
|
+
* https://w3c.github.io/webauthn/#sctn-get-request-exceptions
|
|
21
|
+
*
|
|
22
|
+
* @param err unknown
|
|
23
|
+
* @returns PasskeyError
|
|
24
|
+
*/
|
|
25
|
+
export declare const handlePasskeyAuthenticationError: (err: unknown) => PasskeyError;
|
|
26
|
+
/**
|
|
27
|
+
* Handle Passkey Registration Errors
|
|
28
|
+
* https://w3c.github.io/webauthn/#sctn-create-request-exceptions
|
|
29
|
+
*
|
|
30
|
+
* @param err unknown
|
|
31
|
+
* @returns PasskeyError
|
|
32
|
+
*/
|
|
33
|
+
export declare const handlePasskeyRegistrationError: (err: unknown) => PasskeyError;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { createAssertionFunction, AmplifyError, AmplifyErrorCode } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
|
|
3
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
class PasskeyError extends AmplifyError {
|
|
6
|
+
constructor(params) {
|
|
7
|
+
super(params);
|
|
8
|
+
// Hack for making the custom error class work when transpiled to es5
|
|
9
|
+
// TODO: Delete the following 2 lines after we change the build target to >= es2015
|
|
10
|
+
this.constructor = PasskeyError;
|
|
11
|
+
Object.setPrototypeOf(this, PasskeyError.prototype);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
var PasskeyErrorCode;
|
|
15
|
+
(function (PasskeyErrorCode) {
|
|
16
|
+
// not supported
|
|
17
|
+
PasskeyErrorCode["PasskeyNotSupported"] = "PasskeyNotSupported";
|
|
18
|
+
// duplicate passkey
|
|
19
|
+
PasskeyErrorCode["PasskeyAlreadyExists"] = "PasskeyAlreadyExists";
|
|
20
|
+
// misconfigurations
|
|
21
|
+
PasskeyErrorCode["InvalidPasskeyRegistrationOptions"] = "InvalidPasskeyRegistrationOptions";
|
|
22
|
+
PasskeyErrorCode["InvalidPasskeyAuthenticationOptions"] = "InvalidPasskeyAuthenticationOptions";
|
|
23
|
+
PasskeyErrorCode["RelyingPartyMismatch"] = "RelyingPartyMismatch";
|
|
24
|
+
// failed credential creation / retrieval
|
|
25
|
+
PasskeyErrorCode["PasskeyRegistrationFailed"] = "PasskeyRegistrationFailed";
|
|
26
|
+
PasskeyErrorCode["PasskeyRetrievalFailed"] = "PasskeyRetrievalFailed";
|
|
27
|
+
// cancel / aborts
|
|
28
|
+
PasskeyErrorCode["PasskeyRegistrationCanceled"] = "PasskeyRegistrationCanceled";
|
|
29
|
+
PasskeyErrorCode["PasskeyAuthenticationCanceled"] = "PasskeyAuthenticationCanceled";
|
|
30
|
+
PasskeyErrorCode["PasskeyOperationAborted"] = "PasskeyOperationAborted";
|
|
31
|
+
})(PasskeyErrorCode || (PasskeyErrorCode = {}));
|
|
32
|
+
const notSupportedRecoverySuggestion = 'Passkeys may not be supported on this device. Ensure your application is running in a secure context (HTTPS) and Web Authentication API is supported.';
|
|
33
|
+
const abortOrCancelRecoverySuggestion = 'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';
|
|
34
|
+
const misconfigurationRecoverySuggestion = 'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';
|
|
35
|
+
const passkeyErrorMap = {
|
|
36
|
+
[PasskeyErrorCode.PasskeyNotSupported]: {
|
|
37
|
+
message: 'Passkeys may not be supported on this device.',
|
|
38
|
+
recoverySuggestion: notSupportedRecoverySuggestion,
|
|
39
|
+
},
|
|
40
|
+
[PasskeyErrorCode.InvalidPasskeyRegistrationOptions]: {
|
|
41
|
+
message: 'Invalid passkey registration options.',
|
|
42
|
+
recoverySuggestion: misconfigurationRecoverySuggestion,
|
|
43
|
+
},
|
|
44
|
+
[PasskeyErrorCode.InvalidPasskeyAuthenticationOptions]: {
|
|
45
|
+
message: 'Invalid passkey authentication options.',
|
|
46
|
+
recoverySuggestion: misconfigurationRecoverySuggestion,
|
|
47
|
+
},
|
|
48
|
+
[PasskeyErrorCode.PasskeyRegistrationFailed]: {
|
|
49
|
+
message: 'Device failed to create passkey.',
|
|
50
|
+
recoverySuggestion: notSupportedRecoverySuggestion,
|
|
51
|
+
},
|
|
52
|
+
[PasskeyErrorCode.PasskeyRetrievalFailed]: {
|
|
53
|
+
message: 'Device failed to retrieve passkey.',
|
|
54
|
+
recoverySuggestion: 'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',
|
|
55
|
+
},
|
|
56
|
+
[PasskeyErrorCode.PasskeyAlreadyExists]: {
|
|
57
|
+
message: 'Passkey already exists in authenticator.',
|
|
58
|
+
recoverySuggestion: 'Proceed with existing passkey or try again after deleting the credential.',
|
|
59
|
+
},
|
|
60
|
+
[PasskeyErrorCode.PasskeyRegistrationCanceled]: {
|
|
61
|
+
message: 'Passkey registration ceremony has been canceled.',
|
|
62
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
63
|
+
},
|
|
64
|
+
[PasskeyErrorCode.PasskeyAuthenticationCanceled]: {
|
|
65
|
+
message: 'Passkey authentication ceremony has been canceled.',
|
|
66
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
67
|
+
},
|
|
68
|
+
[PasskeyErrorCode.PasskeyOperationAborted]: {
|
|
69
|
+
message: 'Passkey operation has been aborted.',
|
|
70
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
71
|
+
},
|
|
72
|
+
[PasskeyErrorCode.RelyingPartyMismatch]: {
|
|
73
|
+
message: 'Relying party does not match current domain.',
|
|
74
|
+
recoverySuggestion: 'Ensure relying party identifier matches current domain.',
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
const assertPasskeyError = createAssertionFunction(passkeyErrorMap, PasskeyError);
|
|
78
|
+
/**
|
|
79
|
+
* Handle Passkey Authentication Errors
|
|
80
|
+
* https://w3c.github.io/webauthn/#sctn-get-request-exceptions
|
|
81
|
+
*
|
|
82
|
+
* @param err unknown
|
|
83
|
+
* @returns PasskeyError
|
|
84
|
+
*/
|
|
85
|
+
const handlePasskeyAuthenticationError = (err) => {
|
|
86
|
+
if (err instanceof PasskeyError) {
|
|
87
|
+
return err;
|
|
88
|
+
}
|
|
89
|
+
if (err instanceof Error) {
|
|
90
|
+
if (err.name === 'NotAllowedError') {
|
|
91
|
+
const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAuthenticationCanceled];
|
|
92
|
+
return new PasskeyError({
|
|
93
|
+
name: PasskeyErrorCode.PasskeyAuthenticationCanceled,
|
|
94
|
+
message,
|
|
95
|
+
recoverySuggestion,
|
|
96
|
+
underlyingError: err,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return handlePasskeyError(err);
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Handle Passkey Registration Errors
|
|
104
|
+
* https://w3c.github.io/webauthn/#sctn-create-request-exceptions
|
|
105
|
+
*
|
|
106
|
+
* @param err unknown
|
|
107
|
+
* @returns PasskeyError
|
|
108
|
+
*/
|
|
109
|
+
const handlePasskeyRegistrationError = (err) => {
|
|
110
|
+
if (err instanceof PasskeyError) {
|
|
111
|
+
return err;
|
|
112
|
+
}
|
|
113
|
+
if (err instanceof Error) {
|
|
114
|
+
// Duplicate Passkey
|
|
115
|
+
if (err.name === 'InvalidStateError') {
|
|
116
|
+
const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAlreadyExists];
|
|
117
|
+
return new PasskeyError({
|
|
118
|
+
name: PasskeyErrorCode.PasskeyAlreadyExists,
|
|
119
|
+
message,
|
|
120
|
+
recoverySuggestion,
|
|
121
|
+
underlyingError: err,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// User Cancels Ceremony / Generic Catch All
|
|
125
|
+
if (err.name === 'NotAllowedError') {
|
|
126
|
+
const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyRegistrationCanceled];
|
|
127
|
+
return new PasskeyError({
|
|
128
|
+
name: PasskeyErrorCode.PasskeyRegistrationCanceled,
|
|
129
|
+
message,
|
|
130
|
+
recoverySuggestion,
|
|
131
|
+
underlyingError: err,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return handlePasskeyError(err);
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Handles Overlapping Passkey Errors Between Registration & Authentication
|
|
139
|
+
* https://w3c.github.io/webauthn/#sctn-create-request-exceptions
|
|
140
|
+
* https://w3c.github.io/webauthn/#sctn-get-request-exceptions
|
|
141
|
+
*
|
|
142
|
+
* @param err unknown
|
|
143
|
+
* @returns PasskeyError
|
|
144
|
+
*/
|
|
145
|
+
const handlePasskeyError = (err) => {
|
|
146
|
+
if (err instanceof Error) {
|
|
147
|
+
// Passkey Operation Aborted
|
|
148
|
+
if (err.name === 'AbortError') {
|
|
149
|
+
const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyOperationAborted];
|
|
150
|
+
return new PasskeyError({
|
|
151
|
+
name: PasskeyErrorCode.PasskeyOperationAborted,
|
|
152
|
+
message,
|
|
153
|
+
recoverySuggestion,
|
|
154
|
+
underlyingError: err,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// Relying Party / Domain Mismatch
|
|
158
|
+
if (err.name === 'SecurityError') {
|
|
159
|
+
const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.RelyingPartyMismatch];
|
|
160
|
+
return new PasskeyError({
|
|
161
|
+
name: PasskeyErrorCode.RelyingPartyMismatch,
|
|
162
|
+
message,
|
|
163
|
+
recoverySuggestion,
|
|
164
|
+
underlyingError: err,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return new PasskeyError({
|
|
169
|
+
name: AmplifyErrorCode.Unknown,
|
|
170
|
+
message: 'An unknown error has occurred.',
|
|
171
|
+
underlyingError: err,
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export { PasskeyError, PasskeyErrorCode, assertPasskeyError, handlePasskeyAuthenticationError, handlePasskeyRegistrationError };
|
|
176
|
+
//# sourceMappingURL=errors.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.mjs","sources":["../../../../../src/client/utils/passkey/errors.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyError, AmplifyErrorCode, createAssertionFunction, } from '@aws-amplify/core/internals/utils';\nexport class PasskeyError extends AmplifyError {\n constructor(params) {\n super(params);\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = PasskeyError;\n Object.setPrototypeOf(this, PasskeyError.prototype);\n }\n}\nexport var PasskeyErrorCode;\n(function (PasskeyErrorCode) {\n // not supported\n PasskeyErrorCode[\"PasskeyNotSupported\"] = \"PasskeyNotSupported\";\n // duplicate passkey\n PasskeyErrorCode[\"PasskeyAlreadyExists\"] = \"PasskeyAlreadyExists\";\n // misconfigurations\n PasskeyErrorCode[\"InvalidPasskeyRegistrationOptions\"] = \"InvalidPasskeyRegistrationOptions\";\n PasskeyErrorCode[\"InvalidPasskeyAuthenticationOptions\"] = \"InvalidPasskeyAuthenticationOptions\";\n PasskeyErrorCode[\"RelyingPartyMismatch\"] = \"RelyingPartyMismatch\";\n // failed credential creation / retrieval\n PasskeyErrorCode[\"PasskeyRegistrationFailed\"] = \"PasskeyRegistrationFailed\";\n PasskeyErrorCode[\"PasskeyRetrievalFailed\"] = \"PasskeyRetrievalFailed\";\n // cancel / aborts\n PasskeyErrorCode[\"PasskeyRegistrationCanceled\"] = \"PasskeyRegistrationCanceled\";\n PasskeyErrorCode[\"PasskeyAuthenticationCanceled\"] = \"PasskeyAuthenticationCanceled\";\n PasskeyErrorCode[\"PasskeyOperationAborted\"] = \"PasskeyOperationAborted\";\n})(PasskeyErrorCode || (PasskeyErrorCode = {}));\nconst notSupportedRecoverySuggestion = 'Passkeys may not be supported on this device. Ensure your application is running in a secure context (HTTPS) and Web Authentication API is supported.';\nconst abortOrCancelRecoverySuggestion = 'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';\nconst misconfigurationRecoverySuggestion = 'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';\nconst passkeyErrorMap = {\n [PasskeyErrorCode.PasskeyNotSupported]: {\n message: 'Passkeys may not be supported on this device.',\n recoverySuggestion: notSupportedRecoverySuggestion,\n },\n [PasskeyErrorCode.InvalidPasskeyRegistrationOptions]: {\n message: 'Invalid passkey registration options.',\n recoverySuggestion: misconfigurationRecoverySuggestion,\n },\n [PasskeyErrorCode.InvalidPasskeyAuthenticationOptions]: {\n message: 'Invalid passkey authentication options.',\n recoverySuggestion: misconfigurationRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyRegistrationFailed]: {\n message: 'Device failed to create passkey.',\n recoverySuggestion: notSupportedRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyRetrievalFailed]: {\n message: 'Device failed to retrieve passkey.',\n recoverySuggestion: 'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',\n },\n [PasskeyErrorCode.PasskeyAlreadyExists]: {\n message: 'Passkey already exists in authenticator.',\n recoverySuggestion: 'Proceed with existing passkey or try again after deleting the credential.',\n },\n [PasskeyErrorCode.PasskeyRegistrationCanceled]: {\n message: 'Passkey registration ceremony has been canceled.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyAuthenticationCanceled]: {\n message: 'Passkey authentication ceremony has been canceled.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.PasskeyOperationAborted]: {\n message: 'Passkey operation has been aborted.',\n recoverySuggestion: abortOrCancelRecoverySuggestion,\n },\n [PasskeyErrorCode.RelyingPartyMismatch]: {\n message: 'Relying party does not match current domain.',\n recoverySuggestion: 'Ensure relying party identifier matches current domain.',\n },\n};\nexport const assertPasskeyError = createAssertionFunction(passkeyErrorMap, PasskeyError);\n/**\n * Handle Passkey Authentication Errors\n * https://w3c.github.io/webauthn/#sctn-get-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nexport const handlePasskeyAuthenticationError = (err) => {\n if (err instanceof PasskeyError) {\n return err;\n }\n if (err instanceof Error) {\n if (err.name === 'NotAllowedError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAuthenticationCanceled];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyAuthenticationCanceled,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return handlePasskeyError(err);\n};\n/**\n * Handle Passkey Registration Errors\n * https://w3c.github.io/webauthn/#sctn-create-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nexport const handlePasskeyRegistrationError = (err) => {\n if (err instanceof PasskeyError) {\n return err;\n }\n if (err instanceof Error) {\n // Duplicate Passkey\n if (err.name === 'InvalidStateError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyAlreadyExists];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyAlreadyExists,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n // User Cancels Ceremony / Generic Catch All\n if (err.name === 'NotAllowedError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyRegistrationCanceled];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyRegistrationCanceled,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return handlePasskeyError(err);\n};\n/**\n * Handles Overlapping Passkey Errors Between Registration & Authentication\n * https://w3c.github.io/webauthn/#sctn-create-request-exceptions\n * https://w3c.github.io/webauthn/#sctn-get-request-exceptions\n *\n * @param err unknown\n * @returns PasskeyError\n */\nconst handlePasskeyError = (err) => {\n if (err instanceof Error) {\n // Passkey Operation Aborted\n if (err.name === 'AbortError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.PasskeyOperationAborted];\n return new PasskeyError({\n name: PasskeyErrorCode.PasskeyOperationAborted,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n // Relying Party / Domain Mismatch\n if (err.name === 'SecurityError') {\n const { message, recoverySuggestion } = passkeyErrorMap[PasskeyErrorCode.RelyingPartyMismatch];\n return new PasskeyError({\n name: PasskeyErrorCode.RelyingPartyMismatch,\n message,\n recoverySuggestion,\n underlyingError: err,\n });\n }\n }\n return new PasskeyError({\n name: AmplifyErrorCode.Unknown,\n message: 'An unknown error has occurred.',\n underlyingError: err,\n });\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isBrowser } from '@aws-amplify/core/internals/utils';
|
|
2
|
+
|
|
3
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
/**
|
|
6
|
+
* Determines if passkey is supported in current context
|
|
7
|
+
* Will return false if executed in non-secure context
|
|
8
|
+
* @returns boolean
|
|
9
|
+
*/
|
|
10
|
+
const getIsPasskeySupported = () => {
|
|
11
|
+
return (isBrowser() &&
|
|
12
|
+
window.isSecureContext &&
|
|
13
|
+
'credentials' in navigator &&
|
|
14
|
+
typeof window.PublicKeyCredential === 'function');
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { getIsPasskeySupported };
|
|
18
|
+
//# sourceMappingURL=getIsPasskeySupported.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIsPasskeySupported.mjs","sources":["../../../../../src/client/utils/passkey/getIsPasskeySupported.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\n/**\n * Determines if passkey is supported in current context\n * Will return false if executed in non-secure context\n * @returns boolean\n */\nexport const getIsPasskeySupported = () => {\n return (isBrowser() &&\n window.isSecureContext &&\n 'credentials' in navigator &&\n typeof window.PublicKeyCredential === 'function');\n};\n"],"names":[],"mappings":";;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,MAAM;AAC3C,IAAI,QAAQ,SAAS,EAAE;AACvB,QAAQ,MAAM,CAAC,eAAe;AAC9B,QAAQ,aAAa,IAAI,SAAS;AAClC,QAAQ,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,EAAE;AAC1D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getIsPasskeySupported: () => never;
|