@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,214 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
AmplifyError,
|
|
6
|
+
AmplifyErrorCode,
|
|
7
|
+
AmplifyErrorMap,
|
|
8
|
+
AmplifyErrorParams,
|
|
9
|
+
AssertionFunction,
|
|
10
|
+
createAssertionFunction,
|
|
11
|
+
} from '@aws-amplify/core/internals/utils';
|
|
12
|
+
|
|
13
|
+
export class PasskeyError extends AmplifyError {
|
|
14
|
+
constructor(params: AmplifyErrorParams) {
|
|
15
|
+
super(params);
|
|
16
|
+
|
|
17
|
+
// Hack for making the custom error class work when transpiled to es5
|
|
18
|
+
// TODO: Delete the following 2 lines after we change the build target to >= es2015
|
|
19
|
+
this.constructor = PasskeyError;
|
|
20
|
+
Object.setPrototypeOf(this, PasskeyError.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum PasskeyErrorCode {
|
|
25
|
+
// not supported
|
|
26
|
+
PasskeyNotSupported = 'PasskeyNotSupported',
|
|
27
|
+
// duplicate passkey
|
|
28
|
+
PasskeyAlreadyExists = 'PasskeyAlreadyExists',
|
|
29
|
+
// misconfigurations
|
|
30
|
+
InvalidPasskeyRegistrationOptions = 'InvalidPasskeyRegistrationOptions',
|
|
31
|
+
InvalidPasskeyAuthenticationOptions = 'InvalidPasskeyAuthenticationOptions',
|
|
32
|
+
RelyingPartyMismatch = 'RelyingPartyMismatch',
|
|
33
|
+
// failed credential creation / retrieval
|
|
34
|
+
PasskeyRegistrationFailed = 'PasskeyRegistrationFailed',
|
|
35
|
+
PasskeyRetrievalFailed = 'PasskeyRetrievalFailed',
|
|
36
|
+
// cancel / aborts
|
|
37
|
+
PasskeyRegistrationCanceled = 'PasskeyRegistrationCanceled',
|
|
38
|
+
PasskeyAuthenticationCanceled = 'PasskeyAuthenticationCanceled',
|
|
39
|
+
PasskeyOperationAborted = 'PasskeyOperationAborted',
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const notSupportedRecoverySuggestion =
|
|
43
|
+
'Passkeys may not be supported on this device. Ensure your application is running in a secure context (HTTPS) and Web Authentication API is supported.';
|
|
44
|
+
const abortOrCancelRecoverySuggestion =
|
|
45
|
+
'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';
|
|
46
|
+
const misconfigurationRecoverySuggestion =
|
|
47
|
+
'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';
|
|
48
|
+
|
|
49
|
+
const passkeyErrorMap: AmplifyErrorMap<PasskeyErrorCode> = {
|
|
50
|
+
[PasskeyErrorCode.PasskeyNotSupported]: {
|
|
51
|
+
message: 'Passkeys may not be supported on this device.',
|
|
52
|
+
recoverySuggestion: notSupportedRecoverySuggestion,
|
|
53
|
+
},
|
|
54
|
+
[PasskeyErrorCode.InvalidPasskeyRegistrationOptions]: {
|
|
55
|
+
message: 'Invalid passkey registration options.',
|
|
56
|
+
recoverySuggestion: misconfigurationRecoverySuggestion,
|
|
57
|
+
},
|
|
58
|
+
[PasskeyErrorCode.InvalidPasskeyAuthenticationOptions]: {
|
|
59
|
+
message: 'Invalid passkey authentication options.',
|
|
60
|
+
recoverySuggestion: misconfigurationRecoverySuggestion,
|
|
61
|
+
},
|
|
62
|
+
[PasskeyErrorCode.PasskeyRegistrationFailed]: {
|
|
63
|
+
message: 'Device failed to create passkey.',
|
|
64
|
+
recoverySuggestion: notSupportedRecoverySuggestion,
|
|
65
|
+
},
|
|
66
|
+
[PasskeyErrorCode.PasskeyRetrievalFailed]: {
|
|
67
|
+
message: 'Device failed to retrieve passkey.',
|
|
68
|
+
recoverySuggestion:
|
|
69
|
+
'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',
|
|
70
|
+
},
|
|
71
|
+
[PasskeyErrorCode.PasskeyAlreadyExists]: {
|
|
72
|
+
message: 'Passkey already exists in authenticator.',
|
|
73
|
+
recoverySuggestion:
|
|
74
|
+
'Proceed with existing passkey or try again after deleting the credential.',
|
|
75
|
+
},
|
|
76
|
+
[PasskeyErrorCode.PasskeyRegistrationCanceled]: {
|
|
77
|
+
message: 'Passkey registration ceremony has been canceled.',
|
|
78
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
79
|
+
},
|
|
80
|
+
[PasskeyErrorCode.PasskeyAuthenticationCanceled]: {
|
|
81
|
+
message: 'Passkey authentication ceremony has been canceled.',
|
|
82
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
83
|
+
},
|
|
84
|
+
[PasskeyErrorCode.PasskeyOperationAborted]: {
|
|
85
|
+
message: 'Passkey operation has been aborted.',
|
|
86
|
+
recoverySuggestion: abortOrCancelRecoverySuggestion,
|
|
87
|
+
},
|
|
88
|
+
[PasskeyErrorCode.RelyingPartyMismatch]: {
|
|
89
|
+
message: 'Relying party does not match current domain.',
|
|
90
|
+
recoverySuggestion:
|
|
91
|
+
'Ensure relying party identifier matches current domain.',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const assertPasskeyError: AssertionFunction<PasskeyErrorCode> =
|
|
96
|
+
createAssertionFunction(passkeyErrorMap, PasskeyError);
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Handle Passkey Authentication Errors
|
|
100
|
+
* https://w3c.github.io/webauthn/#sctn-get-request-exceptions
|
|
101
|
+
*
|
|
102
|
+
* @param err unknown
|
|
103
|
+
* @returns PasskeyError
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
export const handlePasskeyAuthenticationError = (
|
|
107
|
+
err: unknown,
|
|
108
|
+
): PasskeyError => {
|
|
109
|
+
if (err instanceof PasskeyError) {
|
|
110
|
+
return err;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (err instanceof Error) {
|
|
114
|
+
if (err.name === 'NotAllowedError') {
|
|
115
|
+
const { message, recoverySuggestion } =
|
|
116
|
+
passkeyErrorMap[PasskeyErrorCode.PasskeyAuthenticationCanceled];
|
|
117
|
+
|
|
118
|
+
return new PasskeyError({
|
|
119
|
+
name: PasskeyErrorCode.PasskeyAuthenticationCanceled,
|
|
120
|
+
message,
|
|
121
|
+
recoverySuggestion,
|
|
122
|
+
underlyingError: err,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return handlePasskeyError(err);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Handle Passkey Registration Errors
|
|
132
|
+
* https://w3c.github.io/webauthn/#sctn-create-request-exceptions
|
|
133
|
+
*
|
|
134
|
+
* @param err unknown
|
|
135
|
+
* @returns PasskeyError
|
|
136
|
+
*/
|
|
137
|
+
export const handlePasskeyRegistrationError = (err: unknown): PasskeyError => {
|
|
138
|
+
if (err instanceof PasskeyError) {
|
|
139
|
+
return err;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (err instanceof Error) {
|
|
143
|
+
// Duplicate Passkey
|
|
144
|
+
if (err.name === 'InvalidStateError') {
|
|
145
|
+
const { message, recoverySuggestion } =
|
|
146
|
+
passkeyErrorMap[PasskeyErrorCode.PasskeyAlreadyExists];
|
|
147
|
+
|
|
148
|
+
return new PasskeyError({
|
|
149
|
+
name: PasskeyErrorCode.PasskeyAlreadyExists,
|
|
150
|
+
message,
|
|
151
|
+
recoverySuggestion,
|
|
152
|
+
underlyingError: err,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// User Cancels Ceremony / Generic Catch All
|
|
157
|
+
if (err.name === 'NotAllowedError') {
|
|
158
|
+
const { message, recoverySuggestion } =
|
|
159
|
+
passkeyErrorMap[PasskeyErrorCode.PasskeyRegistrationCanceled];
|
|
160
|
+
|
|
161
|
+
return new PasskeyError({
|
|
162
|
+
name: PasskeyErrorCode.PasskeyRegistrationCanceled,
|
|
163
|
+
message,
|
|
164
|
+
recoverySuggestion,
|
|
165
|
+
underlyingError: err,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return handlePasskeyError(err);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Handles Overlapping Passkey Errors Between Registration & Authentication
|
|
175
|
+
* https://w3c.github.io/webauthn/#sctn-create-request-exceptions
|
|
176
|
+
* https://w3c.github.io/webauthn/#sctn-get-request-exceptions
|
|
177
|
+
*
|
|
178
|
+
* @param err unknown
|
|
179
|
+
* @returns PasskeyError
|
|
180
|
+
*/
|
|
181
|
+
const handlePasskeyError = (err: unknown): PasskeyError => {
|
|
182
|
+
if (err instanceof Error) {
|
|
183
|
+
// Passkey Operation Aborted
|
|
184
|
+
if (err.name === 'AbortError') {
|
|
185
|
+
const { message, recoverySuggestion } =
|
|
186
|
+
passkeyErrorMap[PasskeyErrorCode.PasskeyOperationAborted];
|
|
187
|
+
|
|
188
|
+
return new PasskeyError({
|
|
189
|
+
name: PasskeyErrorCode.PasskeyOperationAborted,
|
|
190
|
+
message,
|
|
191
|
+
recoverySuggestion,
|
|
192
|
+
underlyingError: err,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// Relying Party / Domain Mismatch
|
|
196
|
+
if (err.name === 'SecurityError') {
|
|
197
|
+
const { message, recoverySuggestion } =
|
|
198
|
+
passkeyErrorMap[PasskeyErrorCode.RelyingPartyMismatch];
|
|
199
|
+
|
|
200
|
+
return new PasskeyError({
|
|
201
|
+
name: PasskeyErrorCode.RelyingPartyMismatch,
|
|
202
|
+
message,
|
|
203
|
+
recoverySuggestion,
|
|
204
|
+
underlyingError: err,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return new PasskeyError({
|
|
210
|
+
name: AmplifyErrorCode.Unknown,
|
|
211
|
+
message: 'An unknown error has occurred.',
|
|
212
|
+
underlyingError: err,
|
|
213
|
+
});
|
|
214
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
|
|
6
|
+
export const getIsPasskeySupported = () => {
|
|
7
|
+
throw new PlatformNotSupportedError();
|
|
8
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { isBrowser } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines if passkey is supported in current context
|
|
8
|
+
* Will return false if executed in non-secure context
|
|
9
|
+
* @returns boolean
|
|
10
|
+
*/
|
|
11
|
+
export const getIsPasskeySupported = (): boolean => {
|
|
12
|
+
return (
|
|
13
|
+
isBrowser() &&
|
|
14
|
+
window.isSecureContext &&
|
|
15
|
+
'credentials' in navigator &&
|
|
16
|
+
typeof window.PublicKeyCredential === 'function'
|
|
17
|
+
);
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
|
|
6
|
+
export const getPasskey = async () => {
|
|
7
|
+
throw new PlatformNotSupportedError();
|
|
8
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
PasskeyErrorCode,
|
|
6
|
+
assertPasskeyError,
|
|
7
|
+
handlePasskeyAuthenticationError,
|
|
8
|
+
} from './errors';
|
|
9
|
+
import { getIsPasskeySupported } from './getIsPasskeySupported';
|
|
10
|
+
import {
|
|
11
|
+
deserializeJsonToPkcGetOptions,
|
|
12
|
+
serializePkcWithAssertionToJson,
|
|
13
|
+
} from './serde';
|
|
14
|
+
import {
|
|
15
|
+
PasskeyGetOptionsJson,
|
|
16
|
+
assertCredentialIsPkcWithAuthenticatorAssertionResponse,
|
|
17
|
+
} from './types';
|
|
18
|
+
|
|
19
|
+
export const getPasskey = async (input: PasskeyGetOptionsJson) => {
|
|
20
|
+
try {
|
|
21
|
+
const isPasskeySupported = getIsPasskeySupported();
|
|
22
|
+
|
|
23
|
+
assertPasskeyError(
|
|
24
|
+
isPasskeySupported,
|
|
25
|
+
PasskeyErrorCode.PasskeyNotSupported,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const passkeyGetOptions = deserializeJsonToPkcGetOptions(input);
|
|
29
|
+
|
|
30
|
+
const credential = await navigator.credentials.get({
|
|
31
|
+
publicKey: passkeyGetOptions,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
assertCredentialIsPkcWithAuthenticatorAssertionResponse(credential);
|
|
35
|
+
|
|
36
|
+
return serializePkcWithAssertionToJson(credential);
|
|
37
|
+
} catch (err: unknown) {
|
|
38
|
+
throw handlePasskeyAuthenticationError(err);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
|
|
6
|
+
export const registerPasskey = async () => {
|
|
7
|
+
throw new PlatformNotSupportedError();
|
|
8
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
PasskeyCreateOptionsJson,
|
|
6
|
+
PasskeyCreateResultJson,
|
|
7
|
+
assertCredentialIsPkcWithAuthenticatorAttestationResponse,
|
|
8
|
+
} from './types';
|
|
9
|
+
import {
|
|
10
|
+
deserializeJsonToPkcCreationOptions,
|
|
11
|
+
serializePkcWithAttestationToJson,
|
|
12
|
+
} from './serde';
|
|
13
|
+
import {
|
|
14
|
+
PasskeyErrorCode,
|
|
15
|
+
assertPasskeyError,
|
|
16
|
+
handlePasskeyRegistrationError,
|
|
17
|
+
} from './errors';
|
|
18
|
+
import { getIsPasskeySupported } from './getIsPasskeySupported';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Registers a new passkey for user
|
|
22
|
+
* @param input - PasskeyCreateOptionsJson
|
|
23
|
+
* @returns serialized PasskeyCreateResult
|
|
24
|
+
*/
|
|
25
|
+
export const registerPasskey = async (
|
|
26
|
+
input: PasskeyCreateOptionsJson,
|
|
27
|
+
): Promise<PasskeyCreateResultJson> => {
|
|
28
|
+
try {
|
|
29
|
+
const isPasskeySupported = getIsPasskeySupported();
|
|
30
|
+
|
|
31
|
+
assertPasskeyError(
|
|
32
|
+
isPasskeySupported,
|
|
33
|
+
PasskeyErrorCode.PasskeyNotSupported,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const passkeyCreationOptions = deserializeJsonToPkcCreationOptions(input);
|
|
37
|
+
|
|
38
|
+
const credential = await navigator.credentials.create({
|
|
39
|
+
publicKey: passkeyCreationOptions,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
assertCredentialIsPkcWithAuthenticatorAttestationResponse(credential);
|
|
43
|
+
|
|
44
|
+
return serializePkcWithAttestationToJson(credential);
|
|
45
|
+
} catch (err) {
|
|
46
|
+
throw handlePasskeyRegistrationError(err);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
convertArrayBufferToBase64Url,
|
|
6
|
+
convertBase64UrlToArrayBuffer,
|
|
7
|
+
} from '../../../foundation/convert';
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
PasskeyCreateOptionsJson,
|
|
11
|
+
PasskeyCreateResultJson,
|
|
12
|
+
PasskeyGetOptionsJson,
|
|
13
|
+
PasskeyGetResultJson,
|
|
14
|
+
PkcAssertionResponse,
|
|
15
|
+
PkcAttestationResponse,
|
|
16
|
+
PkcWithAuthenticatorAssertionResponse,
|
|
17
|
+
PkcWithAuthenticatorAttestationResponse,
|
|
18
|
+
} from './types';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Deserializes Public Key Credential Creation Options JSON
|
|
22
|
+
* @param input PasskeyCreateOptionsJson
|
|
23
|
+
* @returns PublicKeyCredentialCreationOptions
|
|
24
|
+
*/
|
|
25
|
+
export const deserializeJsonToPkcCreationOptions = (
|
|
26
|
+
input: PasskeyCreateOptionsJson,
|
|
27
|
+
): PublicKeyCredentialCreationOptions => {
|
|
28
|
+
const userIdBuffer = convertBase64UrlToArrayBuffer(input.user.id);
|
|
29
|
+
const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);
|
|
30
|
+
const excludeCredentialsWithBuffer = (input.excludeCredentials || []).map(
|
|
31
|
+
excludeCred => ({
|
|
32
|
+
...excludeCred,
|
|
33
|
+
id: convertBase64UrlToArrayBuffer(excludeCred.id),
|
|
34
|
+
}),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
...input,
|
|
39
|
+
excludeCredentials: excludeCredentialsWithBuffer,
|
|
40
|
+
challenge: challengeBuffer,
|
|
41
|
+
user: {
|
|
42
|
+
...input.user,
|
|
43
|
+
id: userIdBuffer,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Serializes a Public Key Credential With Attestation to JSON
|
|
50
|
+
* @param input PasskeyCreateResult
|
|
51
|
+
* @returns PasskeyCreateResultJson
|
|
52
|
+
*/
|
|
53
|
+
export const serializePkcWithAttestationToJson = (
|
|
54
|
+
input: PkcWithAuthenticatorAttestationResponse,
|
|
55
|
+
): PasskeyCreateResultJson => {
|
|
56
|
+
const response: PkcAttestationResponse<string> = {
|
|
57
|
+
clientDataJSON: convertArrayBufferToBase64Url(
|
|
58
|
+
input.response.clientDataJSON,
|
|
59
|
+
),
|
|
60
|
+
attestationObject: convertArrayBufferToBase64Url(
|
|
61
|
+
input.response.attestationObject,
|
|
62
|
+
),
|
|
63
|
+
transports: input.response.getTransports(),
|
|
64
|
+
publicKeyAlgorithm: input.response.getPublicKeyAlgorithm(),
|
|
65
|
+
authenticatorData: convertArrayBufferToBase64Url(
|
|
66
|
+
input.response.getAuthenticatorData(),
|
|
67
|
+
),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const publicKey = input.response.getPublicKey();
|
|
71
|
+
|
|
72
|
+
if (publicKey) {
|
|
73
|
+
response.publicKey = convertArrayBufferToBase64Url(publicKey);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const resultJson: PasskeyCreateResultJson = {
|
|
77
|
+
type: input.type,
|
|
78
|
+
id: input.id,
|
|
79
|
+
rawId: convertArrayBufferToBase64Url(input.rawId),
|
|
80
|
+
clientExtensionResults: input.getClientExtensionResults(),
|
|
81
|
+
response,
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
if (input.authenticatorAttachment) {
|
|
85
|
+
resultJson.authenticatorAttachment = input.authenticatorAttachment;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return resultJson;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Deserializes Public Key Credential Get Options JSON
|
|
93
|
+
* @param input PasskeyGetOptionsJson
|
|
94
|
+
* @returns PublicKeyCredentialRequestOptions
|
|
95
|
+
*/
|
|
96
|
+
export const deserializeJsonToPkcGetOptions = (
|
|
97
|
+
input: PasskeyGetOptionsJson,
|
|
98
|
+
): PublicKeyCredentialRequestOptions => {
|
|
99
|
+
const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);
|
|
100
|
+
const allowedCredentialsWithBuffer = (input.allowCredentials || []).map(
|
|
101
|
+
allowedCred => ({
|
|
102
|
+
...allowedCred,
|
|
103
|
+
id: convertBase64UrlToArrayBuffer(allowedCred.id),
|
|
104
|
+
}),
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
...input,
|
|
109
|
+
challenge: challengeBuffer,
|
|
110
|
+
allowCredentials: allowedCredentialsWithBuffer,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Serializes a Public Key Credential With Attestation to JSON
|
|
116
|
+
* @param input PasskeyGetResult
|
|
117
|
+
* @returns PasskeyGetResultJson
|
|
118
|
+
*/
|
|
119
|
+
export const serializePkcWithAssertionToJson = (
|
|
120
|
+
input: PkcWithAuthenticatorAssertionResponse,
|
|
121
|
+
): PasskeyGetResultJson => {
|
|
122
|
+
const response: PkcAssertionResponse<string> = {
|
|
123
|
+
clientDataJSON: convertArrayBufferToBase64Url(
|
|
124
|
+
input.response.clientDataJSON,
|
|
125
|
+
),
|
|
126
|
+
authenticatorData: convertArrayBufferToBase64Url(
|
|
127
|
+
input.response.authenticatorData,
|
|
128
|
+
),
|
|
129
|
+
signature: convertArrayBufferToBase64Url(input.response.signature),
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
if (input.response.userHandle) {
|
|
133
|
+
response.userHandle = convertArrayBufferToBase64Url(
|
|
134
|
+
input.response.userHandle,
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const resultJson: PasskeyGetResultJson = {
|
|
139
|
+
id: input.id,
|
|
140
|
+
rawId: convertArrayBufferToBase64Url(input.rawId),
|
|
141
|
+
type: input.type,
|
|
142
|
+
clientExtensionResults: input.getClientExtensionResults(),
|
|
143
|
+
response,
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
if (input.authenticatorAttachment) {
|
|
147
|
+
resultJson.authenticatorAttachment = input.authenticatorAttachment;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return resultJson;
|
|
151
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { PasskeyErrorCode, assertPasskeyError } from '../errors';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Passkey Create Types
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
PkcAttestationResponse,
|
|
12
|
+
PasskeyCreateOptionsJson,
|
|
13
|
+
PasskeyCreateResultJson,
|
|
14
|
+
assertValidCredentialCreationOptions,
|
|
15
|
+
} from './shared';
|
|
16
|
+
|
|
17
|
+
export type PkcWithAuthenticatorAttestationResponse = Omit<
|
|
18
|
+
PublicKeyCredential,
|
|
19
|
+
'response'
|
|
20
|
+
> & {
|
|
21
|
+
response: AuthenticatorAttestationResponse;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export function assertCredentialIsPkcWithAuthenticatorAttestationResponse(
|
|
25
|
+
credential: any,
|
|
26
|
+
): asserts credential is PkcWithAuthenticatorAttestationResponse {
|
|
27
|
+
assertPasskeyError(
|
|
28
|
+
credential &&
|
|
29
|
+
credential instanceof PublicKeyCredential &&
|
|
30
|
+
credential.response instanceof AuthenticatorAttestationResponse,
|
|
31
|
+
PasskeyErrorCode.PasskeyRegistrationFailed,
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Passkey Get Types
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
PkcAssertionResponse,
|
|
41
|
+
PasskeyGetOptionsJson,
|
|
42
|
+
PasskeyGetResultJson,
|
|
43
|
+
} from './shared';
|
|
44
|
+
|
|
45
|
+
export type PkcWithAuthenticatorAssertionResponse = Omit<
|
|
46
|
+
PublicKeyCredential,
|
|
47
|
+
'response'
|
|
48
|
+
> & {
|
|
49
|
+
response: AuthenticatorAssertionResponse;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export function assertCredentialIsPkcWithAuthenticatorAssertionResponse(
|
|
53
|
+
credential: any,
|
|
54
|
+
): asserts credential is PkcWithAuthenticatorAssertionResponse {
|
|
55
|
+
assertPasskeyError(
|
|
56
|
+
credential &&
|
|
57
|
+
credential instanceof PublicKeyCredential &&
|
|
58
|
+
credential.response instanceof AuthenticatorAssertionResponse,
|
|
59
|
+
PasskeyErrorCode.PasskeyRetrievalFailed,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { PasskeyErrorCode, assertPasskeyError } from '../errors';
|
|
5
|
+
|
|
6
|
+
type PasskeyTransport = 'ble' | 'hybrid' | 'internal' | 'nfc' | 'usb';
|
|
7
|
+
type UserVerificationRequirement = 'discouraged' | 'preferred' | 'required';
|
|
8
|
+
type AttestationConveyancePreference =
|
|
9
|
+
| 'direct'
|
|
10
|
+
| 'enterprise'
|
|
11
|
+
| 'indirect'
|
|
12
|
+
| 'none';
|
|
13
|
+
|
|
14
|
+
interface PkcDescriptor<T> {
|
|
15
|
+
type: 'public-key';
|
|
16
|
+
id: T;
|
|
17
|
+
transports?: PasskeyTransport[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Passkey Create Types
|
|
22
|
+
*/
|
|
23
|
+
export interface PasskeyCreateOptionsJson {
|
|
24
|
+
challenge: string;
|
|
25
|
+
rp: {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
};
|
|
29
|
+
user: {
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
pubKeyCredParams: {
|
|
35
|
+
alg: number;
|
|
36
|
+
type: 'public-key';
|
|
37
|
+
}[];
|
|
38
|
+
timeout?: number;
|
|
39
|
+
excludeCredentials?: PkcDescriptor<string>[];
|
|
40
|
+
authenticatorSelection?: {
|
|
41
|
+
requireResidentKey: boolean;
|
|
42
|
+
residentKey: UserVerificationRequirement;
|
|
43
|
+
userVerification: UserVerificationRequirement;
|
|
44
|
+
};
|
|
45
|
+
attestation?: AttestationConveyancePreference;
|
|
46
|
+
extensions?: {
|
|
47
|
+
appid?: string;
|
|
48
|
+
appidExclude?: string;
|
|
49
|
+
credProps?: boolean;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface PkcAttestationResponse<T> {
|
|
54
|
+
clientDataJSON: T;
|
|
55
|
+
attestationObject: T;
|
|
56
|
+
transports: string[];
|
|
57
|
+
publicKey?: string;
|
|
58
|
+
publicKeyAlgorithm: number;
|
|
59
|
+
authenticatorData: T;
|
|
60
|
+
}
|
|
61
|
+
export interface PasskeyCreateResult {
|
|
62
|
+
id: string;
|
|
63
|
+
rawId: ArrayBuffer;
|
|
64
|
+
type: 'public-key';
|
|
65
|
+
response: PkcAttestationResponse<ArrayBuffer>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface PasskeyCreateResultJson {
|
|
69
|
+
id: string;
|
|
70
|
+
rawId: string;
|
|
71
|
+
type: string;
|
|
72
|
+
clientExtensionResults: {
|
|
73
|
+
appId?: boolean;
|
|
74
|
+
credProps?: { rk?: boolean };
|
|
75
|
+
hmacCreateSecret?: boolean;
|
|
76
|
+
};
|
|
77
|
+
authenticatorAttachment?: string;
|
|
78
|
+
response: PkcAttestationResponse<string>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function assertValidCredentialCreationOptions(
|
|
82
|
+
credentialCreationOptions: any,
|
|
83
|
+
): asserts credentialCreationOptions is PasskeyCreateOptionsJson {
|
|
84
|
+
assertPasskeyError(
|
|
85
|
+
[
|
|
86
|
+
!!credentialCreationOptions,
|
|
87
|
+
!!credentialCreationOptions?.challenge,
|
|
88
|
+
!!credentialCreationOptions?.user,
|
|
89
|
+
!!credentialCreationOptions?.rp,
|
|
90
|
+
!!credentialCreationOptions?.pubKeyCredParams,
|
|
91
|
+
].every(Boolean),
|
|
92
|
+
PasskeyErrorCode.InvalidPasskeyRegistrationOptions,
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Passkey Get Types
|
|
98
|
+
*/
|
|
99
|
+
export interface PasskeyGetOptionsJson {
|
|
100
|
+
challenge: string;
|
|
101
|
+
rpId: string;
|
|
102
|
+
timeout: number;
|
|
103
|
+
allowCredentials: PkcDescriptor<string>[];
|
|
104
|
+
userVerification: UserVerificationRequirement;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface PkcAssertionResponse<T> {
|
|
108
|
+
authenticatorData: T;
|
|
109
|
+
clientDataJSON: T;
|
|
110
|
+
signature: T;
|
|
111
|
+
userHandle?: T;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface PasskeyGetResult {
|
|
115
|
+
id: string;
|
|
116
|
+
rawId: ArrayBuffer;
|
|
117
|
+
type: 'public-key';
|
|
118
|
+
response: PkcAssertionResponse<ArrayBuffer>;
|
|
119
|
+
}
|
|
120
|
+
export interface PasskeyGetResultJson {
|
|
121
|
+
id: string;
|
|
122
|
+
rawId: string;
|
|
123
|
+
type: string;
|
|
124
|
+
clientExtensionResults: {
|
|
125
|
+
appId?: boolean;
|
|
126
|
+
credProps?: { rk?: boolean };
|
|
127
|
+
hmacCreateSecret?: boolean;
|
|
128
|
+
};
|
|
129
|
+
authenticatorAttachment?: string;
|
|
130
|
+
response: PkcAssertionResponse<string>;
|
|
131
|
+
}
|