@aws-amplify/auth 6.17.0 → 6.17.1-unstable.91c2933.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.
@@ -591,8 +591,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
591
591
  clientMetadata,
592
592
  session,
593
593
  username,
594
- config,
595
- });
594
+ config});
596
595
  case 'MFA_SETUP':
597
596
  return handleMFASetupChallenge({
598
597
  challengeResponse,
@@ -600,8 +599,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
600
599
  session,
601
600
  username,
602
601
  deviceName,
603
- config,
604
- });
602
+ config});
605
603
  case 'NEW_PASSWORD_REQUIRED':
606
604
  return handleCompleteNewPasswordChallenge({
607
605
  challengeResponse,
@@ -609,8 +607,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
609
607
  session,
610
608
  username,
611
609
  requiredAttributes: userAttributes,
612
- config,
613
- });
610
+ config});
614
611
  case 'CUSTOM_CHALLENGE':
615
612
  return (0, retryOnResourceNotFoundException_1.retryOnResourceNotFoundException)(handleCustomChallenge, [
616
613
  {
@@ -633,6 +630,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
633
630
  session,
634
631
  username,
635
632
  config,
633
+ tokenOrchestrator,
636
634
  });
637
635
  case 'PASSWORD':
638
636
  return (0, handleSelectChallengeWithPassword_1.handleSelectChallengeWithPassword)(username, challengeResponse, clientMetadata, config, session);
@@ -695,7 +693,7 @@ function getActiveSignInUsername(username) {
695
693
  const state = store_1.signInStore.getState();
696
694
  return state.username ?? username;
697
695
  }
698
- async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }) {
696
+ async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {
699
697
  const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
700
698
  const challengeResponses = {
701
699
  USERNAME: username,
@@ -712,6 +710,10 @@ async function handleMFAChallenge({ challengeName, challengeResponse, clientMeta
712
710
  if (challengeName === 'SOFTWARE_TOKEN_MFA') {
713
711
  challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;
714
712
  }
713
+ const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);
714
+ if (deviceMetadata && deviceMetadata.deviceKey) {
715
+ challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;
716
+ }
715
717
  const userContextData = (0, userContextData_1.getUserContextData)({
716
718
  username,
717
719
  userPoolId,
@@ -730,9 +732,19 @@ async function handleMFAChallenge({ challengeName, challengeResponse, clientMeta
730
732
  endpointOverride: userPoolEndpoint,
731
733
  }),
732
734
  });
733
- return respondToAuthChallenge({
735
+ const response = await respondToAuthChallenge({
734
736
  region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),
735
737
  userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),
736
738
  }, jsonReq);
739
+ if (response.ChallengeName === 'DEVICE_SRP_AUTH') {
740
+ return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({
741
+ username,
742
+ config,
743
+ clientMetadata,
744
+ session: response.Session,
745
+ tokenOrchestrator,
746
+ });
747
+ }
748
+ return response;
737
749
  }
738
750
  //# sourceMappingURL=signInHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signInHelpers.js","sources":["../../../../../src/providers/cognito/utils/signInHelpers.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleCustomChallenge = handleCustomChallenge;\nexports.handleMFASetupChallenge = handleMFASetupChallenge;\nexports.handleSelectMFATypeChallenge = handleSelectMFATypeChallenge;\nexports.handleCompleteNewPasswordChallenge = handleCompleteNewPasswordChallenge;\nexports.handleUserPasswordAuthFlow = handleUserPasswordAuthFlow;\nexports.handleUserSRPAuthFlow = handleUserSRPAuthFlow;\nexports.handleCustomAuthFlowWithoutSRP = handleCustomAuthFlowWithoutSRP;\nexports.handleCustomSRPAuthFlow = handleCustomSRPAuthFlow;\nexports.getSignInResult = getSignInResult;\nexports.getTOTPSetupDetails = getTOTPSetupDetails;\nexports.getSignInResultFromError = getSignInResultFromError;\nexports.parseAttributes = parseAttributes;\nexports.createAttributes = createAttributes;\nexports.handleChallengeName = handleChallengeName;\nexports.mapMfaType = mapMfaType;\nexports.getMFAType = getMFAType;\nexports.getMFATypes = getMFATypes;\nexports.parseMFATypes = parseMFATypes;\nexports.getAllowedMfaSetupTypes = getAllowedMfaSetupTypes;\nexports.assertUserNotAuthenticated = assertUserNotAuthenticated;\nexports.getActiveSignInUsername = getActiveSignInUsername;\nexports.handleMFAChallenge = handleMFAChallenge;\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst AuthError_1 = require(\"../../../errors/AuthError\");\nconst errors_1 = require(\"../types/errors\");\nconst AuthErrorStrings_1 = require(\"../../../common/AuthErrorStrings\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst constants_1 = require(\"../../../errors/constants\");\nconst getCurrentUser_1 = require(\"../apis/getCurrentUser\");\nconst utils_2 = require(\"../../../utils\");\nconst cognitoIdentityProvider_1 = require(\"../../../foundation/factories/serviceClients/cognitoIdentityProvider\");\nconst factories_1 = require(\"../factories\");\nconst parsers_1 = require(\"../../../foundation/parsers\");\nconst handleWebAuthnSignInResult_1 = require(\"../../../client/flows/userAuth/handleWebAuthnSignInResult\");\nconst handlePasswordSRP_1 = require(\"../../../client/flows/shared/handlePasswordSRP\");\nconst handleSelectChallenge_1 = require(\"../../../client/flows/userAuth/handleSelectChallenge\");\nconst handleSelectChallengeWithPassword_1 = require(\"../../../client/flows/userAuth/handleSelectChallengeWithPassword\");\nconst handleSelectChallengeWithPasswordSRP_1 = require(\"../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP\");\nconst store_1 = require(\"../../../client/utils/store\");\nconst srp_1 = require(\"./srp\");\nconst userContextData_1 = require(\"./userContextData\");\nconst handlePasswordVerifierChallenge_1 = require(\"./handlePasswordVerifierChallenge\");\nconst handleDeviceSRPAuth_1 = require(\"./handleDeviceSRPAuth\");\nconst retryOnResourceNotFoundException_1 = require(\"./retryOnResourceNotFoundException\");\nconst setActiveSignInUsername_1 = require(\"./setActiveSignInUsername\");\nconst USER_ATTRIBUTES = 'userAttributes.';\nfunction isWebAuthnResultAuthSignInOutput(result) {\n return 'isSignedIn' in result && 'nextStep' in result;\n}\nasync function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n ANSWER: challengeResponse,\n };\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\nasync function handleMFASetupChallenge({ challengeResponse, username, clientMetadata, session, deviceName, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n if (challengeResponse === 'EMAIL') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"EMAIL_OTP\"]',\n },\n $metadata: {},\n };\n }\n if (challengeResponse === 'TOTP') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"SOFTWARE_TOKEN_MFA\"]',\n },\n $metadata: {},\n };\n }\n const challengeResponses = {\n USERNAME: username,\n };\n const isTOTPCode = /^\\d+$/.test(challengeResponse);\n if (isTOTPCode) {\n const verifySoftwareToken = (0, cognitoIdentityProvider_1.createVerifySoftwareTokenClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session } = await verifySoftwareToken({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, {\n UserCode: challengeResponse,\n Session: session,\n FriendlyDeviceName: deviceName,\n });\n store_1.signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n const isEmail = challengeResponse.includes('@');\n if (isEmail) {\n challengeResponses.EMAIL = challengeResponse;\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `Cannot proceed with MFA setup using challengeResponse: ${challengeResponse}`,\n recoverySuggestion: 'Try passing \"EMAIL\", \"TOTP\", a valid email, or OTP code as the challengeResponse.',\n });\n}\nasync function handleSelectMFATypeChallenge({ challengeResponse, username, clientMetadata, session, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n (0, assertValidationError_1.assertValidationError)(challengeResponse === 'TOTP' ||\n challengeResponse === 'SMS' ||\n challengeResponse === 'EMAIL', validation_1.AuthValidationErrorCode.IncorrectMFAMethod);\n const challengeResponses = {\n USERNAME: username,\n ANSWER: mapMfaType(challengeResponse),\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nasync function handleCompleteNewPasswordChallenge({ challengeResponse, clientMetadata, session, username, requiredAttributes, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n ...createAttributes(requiredAttributes),\n NEW_PASSWORD: challengeResponse,\n USERNAME: username,\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nasync function handleUserPasswordAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n PASSWORD: password,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ??\n response.ChallengeParameters?.USER_ID_FOR_SRP ??\n username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nasync function handleUserSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n return (0, handlePasswordSRP_1.handlePasswordSRP)({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_SRP_AUTH',\n });\n}\nasync function handleCustomAuthFlowWithoutSRP(username, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nasync function handleCustomSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n (0, utils_1.assertTokenProviderConfig)(config);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await (0, srp_1.getAuthenticationHelper)(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n CHALLENGE_NAME: 'SRP_A',\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: challengeParameters, Session: session } = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = challengeParameters?.USERNAME ?? username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n return (0, retryOnResourceNotFoundException_1.retryOnResourceNotFoundException)(handlePasswordVerifierChallenge_1.handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n}\nasync function getSignInResult(params) {\n const { challengeName, challengeParameters, availableChallenges } = params;\n const authConfig = core_1.Amplify.getConfig().Auth?.Cognito;\n (0, utils_1.assertTokenProviderConfig)(authConfig);\n switch (challengeName) {\n case 'CUSTOM_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE',\n additionalInfo: challengeParameters,\n },\n };\n case 'MFA_SETUP': {\n const { signInSession, username } = store_1.signInStore.getState();\n const mfaSetupTypes = getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_SETUP)) || [];\n const allowedMfaSetupTypes = getAllowedMfaSetupTypes(mfaSetupTypes);\n const isTotpMfaSetupAvailable = allowedMfaSetupTypes.includes('TOTP');\n const isEmailMfaSetupAvailable = allowedMfaSetupTypes.includes('EMAIL');\n if (isTotpMfaSetupAvailable && isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION',\n allowedMFATypes: allowedMfaSetupTypes,\n },\n };\n }\n if (isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP',\n },\n };\n }\n if (isTotpMfaSetupAvailable) {\n const associateSoftwareToken = (0, cognitoIdentityProvider_1.createAssociateSoftwareTokenClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { Session, SecretCode: secretCode } = await associateSoftwareToken({ region: (0, parsers_1.getRegionFromUserPoolId)(authConfig.userPoolId) }, {\n Session: signInSession,\n });\n store_1.signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP',\n totpSetupDetails: getTOTPSetupDetails(secretCode, username),\n },\n };\n }\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `Cannot initiate MFA setup from available types: ${mfaSetupTypes}`,\n });\n }\n case 'NEW_PASSWORD_REQUIRED':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED',\n missingAttributes: parseAttributes(challengeParameters.requiredAttributes),\n },\n };\n case 'SELECT_MFA_TYPE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION',\n allowedMFATypes: getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_CHOOSE)),\n },\n };\n case 'SMS_OTP':\n case 'SMS_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_SMS_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'SOFTWARE_TOKEN_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_TOTP_CODE',\n },\n };\n case 'EMAIL_OTP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'WEB_AUTHN': {\n const result = await (0, handleWebAuthnSignInResult_1.handleWebAuthnSignInResult)(challengeParameters);\n if (isWebAuthnResultAuthSignInOutput(result)) {\n return result;\n }\n return getSignInResult(result);\n }\n case 'PASSWORD':\n case 'PASSWORD_SRP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',\n },\n };\n case 'SELECT_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',\n availableChallenges,\n },\n };\n case 'ADMIN_NO_SRP_AUTH':\n break;\n case 'DEVICE_PASSWORD_VERIFIER':\n break;\n case 'DEVICE_SRP_AUTH':\n break;\n case 'PASSWORD_VERIFIER':\n break;\n }\n // TODO: remove this error message for production apps\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: 'An error occurred during the sign in process. ' +\n `${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nfunction getTOTPSetupDetails(secretCode, username) {\n return {\n sharedSecret: secretCode,\n getSetupUri: (appName, accountName) => {\n const totpUri = `otpauth://totp/${appName}:${accountName ?? username}?secret=${secretCode}&issuer=${appName}`;\n return new utils_1.AmplifyUrl(totpUri);\n },\n };\n}\nfunction getSignInResultFromError(errorName) {\n if (errorName === errors_1.InitiateAuthException.PasswordResetRequiredException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'RESET_PASSWORD' },\n };\n }\n else if (errorName === errors_1.InitiateAuthException.UserNotConfirmedException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'CONFIRM_SIGN_UP' },\n };\n }\n}\nfunction parseAttributes(attributes) {\n if (!attributes)\n return [];\n const parsedAttributes = JSON.parse(attributes).map(att => att.includes(USER_ATTRIBUTES) ? att.replace(USER_ATTRIBUTES, '') : att);\n return parsedAttributes;\n}\nfunction createAttributes(attributes) {\n if (!attributes)\n return {};\n const newAttributes = {};\n Object.entries(attributes).forEach(([key, value]) => {\n if (value)\n newAttributes[`${USER_ATTRIBUTES}${key}`] = value;\n });\n return newAttributes;\n}\nasync function handleChallengeName(username, challengeName, session, challengeResponse, config, tokenOrchestrator, clientMetadata, options) {\n const userAttributes = options?.userAttributes;\n const deviceName = options?.friendlyDeviceName;\n switch (challengeName) {\n case 'WEB_AUTHN':\n case 'SELECT_CHALLENGE':\n if (challengeResponse === 'PASSWORD_SRP' ||\n challengeResponse === 'PASSWORD') {\n return {\n ChallengeName: challengeResponse,\n Session: session,\n $metadata: {},\n };\n }\n return (0, handleSelectChallenge_1.initiateSelectedChallenge)({\n username,\n session,\n selectedChallenge: challengeResponse,\n config,\n clientMetadata,\n });\n case 'SELECT_MFA_TYPE':\n return handleSelectMFATypeChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'MFA_SETUP':\n return handleMFASetupChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n deviceName,\n config,\n });\n case 'NEW_PASSWORD_REQUIRED':\n return handleCompleteNewPasswordChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n requiredAttributes: userAttributes,\n config,\n });\n case 'CUSTOM_CHALLENGE':\n return (0, retryOnResourceNotFoundException_1.retryOnResourceNotFoundException)(handleCustomChallenge, [\n {\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n },\n ], username, tokenOrchestrator);\n case 'SMS_MFA':\n case 'SOFTWARE_TOKEN_MFA':\n case 'SMS_OTP':\n case 'EMAIL_OTP':\n return handleMFAChallenge({\n challengeName,\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'PASSWORD':\n return (0, handleSelectChallengeWithPassword_1.handleSelectChallengeWithPassword)(username, challengeResponse, clientMetadata, config, session);\n case 'PASSWORD_SRP':\n return (0, handleSelectChallengeWithPasswordSRP_1.handleSelectChallengeWithPasswordSRP)(username, challengeResponse, // This is the actual password\n clientMetadata, config, session, tokenOrchestrator);\n }\n // TODO: remove this error message for production apps\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `An error occurred during the sign in process.\n\t\t${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nfunction mapMfaType(mfa) {\n let mfaType = 'SMS_MFA';\n if (mfa === 'TOTP')\n mfaType = 'SOFTWARE_TOKEN_MFA';\n if (mfa === 'EMAIL')\n mfaType = 'EMAIL_OTP';\n return mfaType;\n}\nfunction getMFAType(type) {\n if (type === 'SMS_MFA')\n return 'SMS';\n if (type === 'SOFTWARE_TOKEN_MFA')\n return 'TOTP';\n if (type === 'EMAIL_OTP')\n return 'EMAIL';\n // TODO: log warning for unknown MFA type\n}\nfunction getMFATypes(types) {\n if (!types)\n return undefined;\n return types.map(getMFAType).filter(Boolean);\n}\nfunction parseMFATypes(mfa) {\n if (!mfa)\n return [];\n return JSON.parse(mfa);\n}\nfunction getAllowedMfaSetupTypes(availableMfaSetupTypes) {\n return availableMfaSetupTypes.filter(authMfaType => authMfaType === 'EMAIL' || authMfaType === 'TOTP');\n}\nasync function assertUserNotAuthenticated() {\n let authUser;\n try {\n authUser = await (0, getCurrentUser_1.getCurrentUser)();\n }\n catch (error) { }\n if (authUser && authUser.userId && authUser.username) {\n throw new AuthError_1.AuthError({\n name: constants_1.USER_ALREADY_AUTHENTICATED_EXCEPTION,\n message: 'There is already a signed in user.',\n recoverySuggestion: 'Call signOut before calling signIn again.',\n });\n }\n}\nfunction getActiveSignInUsername(username) {\n const state = store_1.signInStore.getState();\n return state.username ?? username;\n}\nasync function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n };\n if (challengeName === 'EMAIL_OTP') {\n challengeResponses.EMAIL_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_MFA') {\n challengeResponses.SMS_MFA_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_OTP') {\n challengeResponses.SMS_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;\n }\n const userContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: challengeName,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData: userContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signInHelpers.js","sources":["../../../../../src/providers/cognito/utils/signInHelpers.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleCustomChallenge = handleCustomChallenge;\nexports.handleMFASetupChallenge = handleMFASetupChallenge;\nexports.handleSelectMFATypeChallenge = handleSelectMFATypeChallenge;\nexports.handleCompleteNewPasswordChallenge = handleCompleteNewPasswordChallenge;\nexports.handleUserPasswordAuthFlow = handleUserPasswordAuthFlow;\nexports.handleUserSRPAuthFlow = handleUserSRPAuthFlow;\nexports.handleCustomAuthFlowWithoutSRP = handleCustomAuthFlowWithoutSRP;\nexports.handleCustomSRPAuthFlow = handleCustomSRPAuthFlow;\nexports.getSignInResult = getSignInResult;\nexports.getTOTPSetupDetails = getTOTPSetupDetails;\nexports.getSignInResultFromError = getSignInResultFromError;\nexports.parseAttributes = parseAttributes;\nexports.createAttributes = createAttributes;\nexports.handleChallengeName = handleChallengeName;\nexports.mapMfaType = mapMfaType;\nexports.getMFAType = getMFAType;\nexports.getMFATypes = getMFATypes;\nexports.parseMFATypes = parseMFATypes;\nexports.getAllowedMfaSetupTypes = getAllowedMfaSetupTypes;\nexports.assertUserNotAuthenticated = assertUserNotAuthenticated;\nexports.getActiveSignInUsername = getActiveSignInUsername;\nexports.handleMFAChallenge = handleMFAChallenge;\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst AuthError_1 = require(\"../../../errors/AuthError\");\nconst errors_1 = require(\"../types/errors\");\nconst AuthErrorStrings_1 = require(\"../../../common/AuthErrorStrings\");\nconst validation_1 = require(\"../../../errors/types/validation\");\nconst assertValidationError_1 = require(\"../../../errors/utils/assertValidationError\");\nconst constants_1 = require(\"../../../errors/constants\");\nconst getCurrentUser_1 = require(\"../apis/getCurrentUser\");\nconst utils_2 = require(\"../../../utils\");\nconst cognitoIdentityProvider_1 = require(\"../../../foundation/factories/serviceClients/cognitoIdentityProvider\");\nconst factories_1 = require(\"../factories\");\nconst parsers_1 = require(\"../../../foundation/parsers\");\nconst handleWebAuthnSignInResult_1 = require(\"../../../client/flows/userAuth/handleWebAuthnSignInResult\");\nconst handlePasswordSRP_1 = require(\"../../../client/flows/shared/handlePasswordSRP\");\nconst handleSelectChallenge_1 = require(\"../../../client/flows/userAuth/handleSelectChallenge\");\nconst handleSelectChallengeWithPassword_1 = require(\"../../../client/flows/userAuth/handleSelectChallengeWithPassword\");\nconst handleSelectChallengeWithPasswordSRP_1 = require(\"../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP\");\nconst store_1 = require(\"../../../client/utils/store\");\nconst srp_1 = require(\"./srp\");\nconst userContextData_1 = require(\"./userContextData\");\nconst handlePasswordVerifierChallenge_1 = require(\"./handlePasswordVerifierChallenge\");\nconst handleDeviceSRPAuth_1 = require(\"./handleDeviceSRPAuth\");\nconst retryOnResourceNotFoundException_1 = require(\"./retryOnResourceNotFoundException\");\nconst setActiveSignInUsername_1 = require(\"./setActiveSignInUsername\");\nconst USER_ATTRIBUTES = 'userAttributes.';\nfunction isWebAuthnResultAuthSignInOutput(result) {\n return 'isSignedIn' in result && 'nextStep' in result;\n}\nasync function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n ANSWER: challengeResponse,\n };\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\nasync function handleMFASetupChallenge({ challengeResponse, username, clientMetadata, session, deviceName, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n if (challengeResponse === 'EMAIL') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"EMAIL_OTP\"]',\n },\n $metadata: {},\n };\n }\n if (challengeResponse === 'TOTP') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"SOFTWARE_TOKEN_MFA\"]',\n },\n $metadata: {},\n };\n }\n const challengeResponses = {\n USERNAME: username,\n };\n const isTOTPCode = /^\\d+$/.test(challengeResponse);\n if (isTOTPCode) {\n const verifySoftwareToken = (0, cognitoIdentityProvider_1.createVerifySoftwareTokenClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session } = await verifySoftwareToken({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, {\n UserCode: challengeResponse,\n Session: session,\n FriendlyDeviceName: deviceName,\n });\n store_1.signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n const isEmail = challengeResponse.includes('@');\n if (isEmail) {\n challengeResponses.EMAIL = challengeResponse;\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `Cannot proceed with MFA setup using challengeResponse: ${challengeResponse}`,\n recoverySuggestion: 'Try passing \"EMAIL\", \"TOTP\", a valid email, or OTP code as the challengeResponse.',\n });\n}\nasync function handleSelectMFATypeChallenge({ challengeResponse, username, clientMetadata, session, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n (0, assertValidationError_1.assertValidationError)(challengeResponse === 'TOTP' ||\n challengeResponse === 'SMS' ||\n challengeResponse === 'EMAIL', validation_1.AuthValidationErrorCode.IncorrectMFAMethod);\n const challengeResponses = {\n USERNAME: username,\n ANSWER: mapMfaType(challengeResponse),\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nasync function handleCompleteNewPasswordChallenge({ challengeResponse, clientMetadata, session, username, requiredAttributes, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n ...createAttributes(requiredAttributes),\n NEW_PASSWORD: challengeResponse,\n USERNAME: username,\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nasync function handleUserPasswordAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n PASSWORD: password,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ??\n response.ChallengeParameters?.USER_ID_FOR_SRP ??\n username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nasync function handleUserSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n return (0, handlePasswordSRP_1.handlePasswordSRP)({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_SRP_AUTH',\n });\n}\nasync function handleCustomAuthFlowWithoutSRP(username, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nasync function handleCustomSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n (0, utils_1.assertTokenProviderConfig)(config);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await (0, srp_1.getAuthenticationHelper)(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n CHALLENGE_NAME: 'SRP_A',\n };\n const UserContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = (0, cognitoIdentityProvider_1.createInitiateAuthClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: challengeParameters, Session: session } = await initiateAuth({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = challengeParameters?.USERNAME ?? username;\n (0, setActiveSignInUsername_1.setActiveSignInUsername)(activeUsername);\n return (0, retryOnResourceNotFoundException_1.retryOnResourceNotFoundException)(handlePasswordVerifierChallenge_1.handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n}\nasync function getSignInResult(params) {\n const { challengeName, challengeParameters, availableChallenges } = params;\n const authConfig = core_1.Amplify.getConfig().Auth?.Cognito;\n (0, utils_1.assertTokenProviderConfig)(authConfig);\n switch (challengeName) {\n case 'CUSTOM_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE',\n additionalInfo: challengeParameters,\n },\n };\n case 'MFA_SETUP': {\n const { signInSession, username } = store_1.signInStore.getState();\n const mfaSetupTypes = getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_SETUP)) || [];\n const allowedMfaSetupTypes = getAllowedMfaSetupTypes(mfaSetupTypes);\n const isTotpMfaSetupAvailable = allowedMfaSetupTypes.includes('TOTP');\n const isEmailMfaSetupAvailable = allowedMfaSetupTypes.includes('EMAIL');\n if (isTotpMfaSetupAvailable && isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION',\n allowedMFATypes: allowedMfaSetupTypes,\n },\n };\n }\n if (isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP',\n },\n };\n }\n if (isTotpMfaSetupAvailable) {\n const associateSoftwareToken = (0, cognitoIdentityProvider_1.createAssociateSoftwareTokenClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { Session, SecretCode: secretCode } = await associateSoftwareToken({ region: (0, parsers_1.getRegionFromUserPoolId)(authConfig.userPoolId) }, {\n Session: signInSession,\n });\n store_1.signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP',\n totpSetupDetails: getTOTPSetupDetails(secretCode, username),\n },\n };\n }\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `Cannot initiate MFA setup from available types: ${mfaSetupTypes}`,\n });\n }\n case 'NEW_PASSWORD_REQUIRED':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED',\n missingAttributes: parseAttributes(challengeParameters.requiredAttributes),\n },\n };\n case 'SELECT_MFA_TYPE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION',\n allowedMFATypes: getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_CHOOSE)),\n },\n };\n case 'SMS_OTP':\n case 'SMS_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_SMS_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'SOFTWARE_TOKEN_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_TOTP_CODE',\n },\n };\n case 'EMAIL_OTP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'WEB_AUTHN': {\n const result = await (0, handleWebAuthnSignInResult_1.handleWebAuthnSignInResult)(challengeParameters);\n if (isWebAuthnResultAuthSignInOutput(result)) {\n return result;\n }\n return getSignInResult(result);\n }\n case 'PASSWORD':\n case 'PASSWORD_SRP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',\n },\n };\n case 'SELECT_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',\n availableChallenges,\n },\n };\n case 'ADMIN_NO_SRP_AUTH':\n break;\n case 'DEVICE_PASSWORD_VERIFIER':\n break;\n case 'DEVICE_SRP_AUTH':\n break;\n case 'PASSWORD_VERIFIER':\n break;\n }\n // TODO: remove this error message for production apps\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: 'An error occurred during the sign in process. ' +\n `${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nfunction getTOTPSetupDetails(secretCode, username) {\n return {\n sharedSecret: secretCode,\n getSetupUri: (appName, accountName) => {\n const totpUri = `otpauth://totp/${appName}:${accountName ?? username}?secret=${secretCode}&issuer=${appName}`;\n return new utils_1.AmplifyUrl(totpUri);\n },\n };\n}\nfunction getSignInResultFromError(errorName) {\n if (errorName === errors_1.InitiateAuthException.PasswordResetRequiredException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'RESET_PASSWORD' },\n };\n }\n else if (errorName === errors_1.InitiateAuthException.UserNotConfirmedException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'CONFIRM_SIGN_UP' },\n };\n }\n}\nfunction parseAttributes(attributes) {\n if (!attributes)\n return [];\n const parsedAttributes = JSON.parse(attributes).map(att => att.includes(USER_ATTRIBUTES) ? att.replace(USER_ATTRIBUTES, '') : att);\n return parsedAttributes;\n}\nfunction createAttributes(attributes) {\n if (!attributes)\n return {};\n const newAttributes = {};\n Object.entries(attributes).forEach(([key, value]) => {\n if (value)\n newAttributes[`${USER_ATTRIBUTES}${key}`] = value;\n });\n return newAttributes;\n}\nasync function handleChallengeName(username, challengeName, session, challengeResponse, config, tokenOrchestrator, clientMetadata, options) {\n const userAttributes = options?.userAttributes;\n const deviceName = options?.friendlyDeviceName;\n switch (challengeName) {\n case 'WEB_AUTHN':\n case 'SELECT_CHALLENGE':\n if (challengeResponse === 'PASSWORD_SRP' ||\n challengeResponse === 'PASSWORD') {\n return {\n ChallengeName: challengeResponse,\n Session: session,\n $metadata: {},\n };\n }\n return (0, handleSelectChallenge_1.initiateSelectedChallenge)({\n username,\n session,\n selectedChallenge: challengeResponse,\n config,\n clientMetadata,\n });\n case 'SELECT_MFA_TYPE':\n return handleSelectMFATypeChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n });\n case 'MFA_SETUP':\n return handleMFASetupChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n deviceName,\n config,\n tokenOrchestrator,\n });\n case 'NEW_PASSWORD_REQUIRED':\n return handleCompleteNewPasswordChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n requiredAttributes: userAttributes,\n config,\n tokenOrchestrator,\n });\n case 'CUSTOM_CHALLENGE':\n return (0, retryOnResourceNotFoundException_1.retryOnResourceNotFoundException)(handleCustomChallenge, [\n {\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n },\n ], username, tokenOrchestrator);\n case 'SMS_MFA':\n case 'SOFTWARE_TOKEN_MFA':\n case 'SMS_OTP':\n case 'EMAIL_OTP':\n return handleMFAChallenge({\n challengeName,\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n });\n case 'PASSWORD':\n return (0, handleSelectChallengeWithPassword_1.handleSelectChallengeWithPassword)(username, challengeResponse, clientMetadata, config, session);\n case 'PASSWORD_SRP':\n return (0, handleSelectChallengeWithPasswordSRP_1.handleSelectChallengeWithPasswordSRP)(username, challengeResponse, // This is the actual password\n clientMetadata, config, session, tokenOrchestrator);\n }\n // TODO: remove this error message for production apps\n throw new AuthError_1.AuthError({\n name: AuthErrorStrings_1.AuthErrorCodes.SignInException,\n message: `An error occurred during the sign in process.\n\t\t${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nfunction mapMfaType(mfa) {\n let mfaType = 'SMS_MFA';\n if (mfa === 'TOTP')\n mfaType = 'SOFTWARE_TOKEN_MFA';\n if (mfa === 'EMAIL')\n mfaType = 'EMAIL_OTP';\n return mfaType;\n}\nfunction getMFAType(type) {\n if (type === 'SMS_MFA')\n return 'SMS';\n if (type === 'SOFTWARE_TOKEN_MFA')\n return 'TOTP';\n if (type === 'EMAIL_OTP')\n return 'EMAIL';\n // TODO: log warning for unknown MFA type\n}\nfunction getMFATypes(types) {\n if (!types)\n return undefined;\n return types.map(getMFAType).filter(Boolean);\n}\nfunction parseMFATypes(mfa) {\n if (!mfa)\n return [];\n return JSON.parse(mfa);\n}\nfunction getAllowedMfaSetupTypes(availableMfaSetupTypes) {\n return availableMfaSetupTypes.filter(authMfaType => authMfaType === 'EMAIL' || authMfaType === 'TOTP');\n}\nasync function assertUserNotAuthenticated() {\n let authUser;\n try {\n authUser = await (0, getCurrentUser_1.getCurrentUser)();\n }\n catch (error) { }\n if (authUser && authUser.userId && authUser.username) {\n throw new AuthError_1.AuthError({\n name: constants_1.USER_ALREADY_AUTHENTICATED_EXCEPTION,\n message: 'There is already a signed in user.',\n recoverySuggestion: 'Call signOut before calling signIn again.',\n });\n }\n}\nfunction getActiveSignInUsername(username) {\n const state = store_1.signInStore.getState();\n return state.username ?? username;\n}\nasync function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n };\n if (challengeName === 'EMAIL_OTP') {\n challengeResponses.EMAIL_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_MFA') {\n challengeResponses.SMS_MFA_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_OTP') {\n challengeResponses.SMS_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;\n }\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const userContextData = (0, userContextData_1.getUserContextData)({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: challengeName,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData: userContextData,\n };\n const respondToAuthChallenge = (0, cognitoIdentityProvider_1.createRespondToAuthChallengeClient)({\n endpointResolver: (0, factories_1.createCognitoUserPoolEndpointResolver)({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const response = await respondToAuthChallenge({\n region: (0, parsers_1.getRegionFromUserPoolId)(userPoolId),\n userAgentValue: (0, utils_2.getAuthUserAgentValue)(utils_1.AuthAction.ConfirmSignIn),\n }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return (0, handleDeviceSRPAuth_1.handleDeviceSRPAuth)({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\n"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ interface HandleAuthChallengeRequest {
12
12
  deviceName?: string;
13
13
  requiredAttributes?: AuthUserAttributes;
14
14
  config: CognitoUserPoolConfig;
15
+ tokenOrchestrator: AuthTokenOrchestrator;
15
16
  }
16
17
  export declare function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }: HandleAuthChallengeRequest & {
17
18
  tokenOrchestrator: AuthTokenOrchestrator;
@@ -40,7 +41,7 @@ export declare function parseMFATypes(mfa?: string): CognitoMFAType[];
40
41
  export declare function getAllowedMfaSetupTypes(availableMfaSetupTypes: AuthMFAType[]): ("EMAIL" | "TOTP")[];
41
42
  export declare function assertUserNotAuthenticated(): Promise<void>;
42
43
  export declare function getActiveSignInUsername(username: string): string;
43
- export declare function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }: HandleAuthChallengeRequest & {
44
+ export declare function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }: HandleAuthChallengeRequest & {
44
45
  challengeName: Extract<ChallengeName, 'EMAIL_OTP' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | 'SMS_OTP'>;
45
46
  }): Promise<RespondToAuthChallengeCommandOutput>;
46
47
  export {};
@@ -577,8 +577,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
577
577
  clientMetadata,
578
578
  session,
579
579
  username,
580
- config,
581
- });
580
+ config});
582
581
  case 'MFA_SETUP':
583
582
  return handleMFASetupChallenge({
584
583
  challengeResponse,
@@ -586,8 +585,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
586
585
  session,
587
586
  username,
588
587
  deviceName,
589
- config,
590
- });
588
+ config});
591
589
  case 'NEW_PASSWORD_REQUIRED':
592
590
  return handleCompleteNewPasswordChallenge({
593
591
  challengeResponse,
@@ -595,8 +593,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
595
593
  session,
596
594
  username,
597
595
  requiredAttributes: userAttributes,
598
- config,
599
- });
596
+ config});
600
597
  case 'CUSTOM_CHALLENGE':
601
598
  return retryOnResourceNotFoundException(handleCustomChallenge, [
602
599
  {
@@ -619,6 +616,7 @@ async function handleChallengeName(username, challengeName, session, challengeRe
619
616
  session,
620
617
  username,
621
618
  config,
619
+ tokenOrchestrator,
622
620
  });
623
621
  case 'PASSWORD':
624
622
  return handleSelectChallengeWithPassword(username, challengeResponse, clientMetadata, config, session);
@@ -681,7 +679,7 @@ function getActiveSignInUsername(username) {
681
679
  const state = signInStore.getState();
682
680
  return state.username ?? username;
683
681
  }
684
- async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }) {
682
+ async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {
685
683
  const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
686
684
  const challengeResponses = {
687
685
  USERNAME: username,
@@ -698,6 +696,10 @@ async function handleMFAChallenge({ challengeName, challengeResponse, clientMeta
698
696
  if (challengeName === 'SOFTWARE_TOKEN_MFA') {
699
697
  challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;
700
698
  }
699
+ const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);
700
+ if (deviceMetadata && deviceMetadata.deviceKey) {
701
+ challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;
702
+ }
701
703
  const userContextData = getUserContextData({
702
704
  username,
703
705
  userPoolId,
@@ -716,10 +718,20 @@ async function handleMFAChallenge({ challengeName, challengeResponse, clientMeta
716
718
  endpointOverride: userPoolEndpoint,
717
719
  }),
718
720
  });
719
- return respondToAuthChallenge({
721
+ const response = await respondToAuthChallenge({
720
722
  region: getRegionFromUserPoolId(userPoolId),
721
723
  userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),
722
724
  }, jsonReq);
725
+ if (response.ChallengeName === 'DEVICE_SRP_AUTH') {
726
+ return handleDeviceSRPAuth({
727
+ username,
728
+ config,
729
+ clientMetadata,
730
+ session: response.Session,
731
+ tokenOrchestrator,
732
+ });
733
+ }
734
+ return response;
723
735
  }
724
736
 
725
737
  export { assertUserNotAuthenticated, createAttributes, getActiveSignInUsername, getAllowedMfaSetupTypes, getMFAType, getMFATypes, getSignInResult, getSignInResultFromError, getTOTPSetupDetails, handleChallengeName, handleCompleteNewPasswordChallenge, handleCustomAuthFlowWithoutSRP, handleCustomChallenge, handleCustomSRPAuthFlow, handleMFAChallenge, handleMFASetupChallenge, handleSelectMFATypeChallenge, handleUserPasswordAuthFlow, handleUserSRPAuthFlow, mapMfaType, parseAttributes, parseMFATypes };
@@ -1 +1 @@
1
- {"version":3,"file":"signInHelpers.mjs","sources":["../../../../../src/providers/cognito/utils/signInHelpers.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 { AmplifyUrl, AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { InitiateAuthException } from '../types/errors';\nimport { AuthErrorCodes } from '../../../common/AuthErrorStrings';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { USER_ALREADY_AUTHENTICATED_EXCEPTION } from '../../../errors/constants';\nimport { getCurrentUser } from '../apis/getCurrentUser';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createAssociateSoftwareTokenClient, createInitiateAuthClient, createRespondToAuthChallengeClient, createVerifySoftwareTokenClient, } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { handleWebAuthnSignInResult } from '../../../client/flows/userAuth/handleWebAuthnSignInResult';\nimport { handlePasswordSRP } from '../../../client/flows/shared/handlePasswordSRP';\nimport { initiateSelectedChallenge } from '../../../client/flows/userAuth/handleSelectChallenge';\nimport { handleSelectChallengeWithPassword } from '../../../client/flows/userAuth/handleSelectChallengeWithPassword';\nimport { handleSelectChallengeWithPasswordSRP } from '../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP';\nimport { signInStore } from '../../../client/utils/store';\nimport { getAuthenticationHelper } from './srp';\nimport { getUserContextData } from './userContextData';\nimport { handlePasswordVerifierChallenge } from './handlePasswordVerifierChallenge';\nimport { handleDeviceSRPAuth } from './handleDeviceSRPAuth';\nimport { retryOnResourceNotFoundException } from './retryOnResourceNotFoundException';\nimport { setActiveSignInUsername } from './setActiveSignInUsername';\nconst USER_ATTRIBUTES = 'userAttributes.';\nfunction isWebAuthnResultAuthSignInOutput(result) {\n return 'isSignedIn' in result && 'nextStep' in result;\n}\nexport async function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n ANSWER: challengeResponse,\n };\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return handleDeviceSRPAuth({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\nexport async function handleMFASetupChallenge({ challengeResponse, username, clientMetadata, session, deviceName, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n if (challengeResponse === 'EMAIL') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"EMAIL_OTP\"]',\n },\n $metadata: {},\n };\n }\n if (challengeResponse === 'TOTP') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"SOFTWARE_TOKEN_MFA\"]',\n },\n $metadata: {},\n };\n }\n const challengeResponses = {\n USERNAME: username,\n };\n const isTOTPCode = /^\\d+$/.test(challengeResponse);\n if (isTOTPCode) {\n const verifySoftwareToken = createVerifySoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session } = await verifySoftwareToken({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n UserCode: challengeResponse,\n Session: session,\n FriendlyDeviceName: deviceName,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n const isEmail = challengeResponse.includes('@');\n if (isEmail) {\n challengeResponses.EMAIL = challengeResponse;\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot proceed with MFA setup using challengeResponse: ${challengeResponse}`,\n recoverySuggestion: 'Try passing \"EMAIL\", \"TOTP\", a valid email, or OTP code as the challengeResponse.',\n });\n}\nexport async function handleSelectMFATypeChallenge({ challengeResponse, username, clientMetadata, session, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n assertValidationError(challengeResponse === 'TOTP' ||\n challengeResponse === 'SMS' ||\n challengeResponse === 'EMAIL', AuthValidationErrorCode.IncorrectMFAMethod);\n const challengeResponses = {\n USERNAME: username,\n ANSWER: mapMfaType(challengeResponse),\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleCompleteNewPasswordChallenge({ challengeResponse, clientMetadata, session, username, requiredAttributes, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n ...createAttributes(requiredAttributes),\n NEW_PASSWORD: challengeResponse,\n USERNAME: username,\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleUserPasswordAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n PASSWORD: password,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 const activeUsername = response.ChallengeParameters?.USERNAME ??\n response.ChallengeParameters?.USER_ID_FOR_SRP ??\n username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleUserSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_SRP_AUTH',\n });\n}\nexport async function handleCustomAuthFlowWithoutSRP(username, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleCustomSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n assertTokenProviderConfig(config);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n CHALLENGE_NAME: 'SRP_A',\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: challengeParameters, Session: session } = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = challengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n}\nexport async function getSignInResult(params) {\n const { challengeName, challengeParameters, availableChallenges } = params;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n switch (challengeName) {\n case 'CUSTOM_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE',\n additionalInfo: challengeParameters,\n },\n };\n case 'MFA_SETUP': {\n const { signInSession, username } = signInStore.getState();\n const mfaSetupTypes = getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_SETUP)) || [];\n const allowedMfaSetupTypes = getAllowedMfaSetupTypes(mfaSetupTypes);\n const isTotpMfaSetupAvailable = allowedMfaSetupTypes.includes('TOTP');\n const isEmailMfaSetupAvailable = allowedMfaSetupTypes.includes('EMAIL');\n if (isTotpMfaSetupAvailable && isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION',\n allowedMFATypes: allowedMfaSetupTypes,\n },\n };\n }\n if (isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP',\n },\n };\n }\n if (isTotpMfaSetupAvailable) {\n const associateSoftwareToken = createAssociateSoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { Session, SecretCode: secretCode } = await associateSoftwareToken({ region: getRegionFromUserPoolId(authConfig.userPoolId) }, {\n Session: signInSession,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP',\n totpSetupDetails: getTOTPSetupDetails(secretCode, username),\n },\n };\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot initiate MFA setup from available types: ${mfaSetupTypes}`,\n });\n }\n case 'NEW_PASSWORD_REQUIRED':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED',\n missingAttributes: parseAttributes(challengeParameters.requiredAttributes),\n },\n };\n case 'SELECT_MFA_TYPE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION',\n allowedMFATypes: getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_CHOOSE)),\n },\n };\n case 'SMS_OTP':\n case 'SMS_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_SMS_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'SOFTWARE_TOKEN_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_TOTP_CODE',\n },\n };\n case 'EMAIL_OTP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'WEB_AUTHN': {\n const result = await handleWebAuthnSignInResult(challengeParameters);\n if (isWebAuthnResultAuthSignInOutput(result)) {\n return result;\n }\n return getSignInResult(result);\n }\n case 'PASSWORD':\n case 'PASSWORD_SRP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',\n },\n };\n case 'SELECT_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',\n availableChallenges,\n },\n };\n case 'ADMIN_NO_SRP_AUTH':\n break;\n case 'DEVICE_PASSWORD_VERIFIER':\n break;\n case 'DEVICE_SRP_AUTH':\n break;\n case 'PASSWORD_VERIFIER':\n break;\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'An error occurred during the sign in process. ' +\n `${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function getTOTPSetupDetails(secretCode, username) {\n return {\n sharedSecret: secretCode,\n getSetupUri: (appName, accountName) => {\n const totpUri = `otpauth://totp/${appName}:${accountName ?? username}?secret=${secretCode}&issuer=${appName}`;\n return new AmplifyUrl(totpUri);\n },\n };\n}\nexport function getSignInResultFromError(errorName) {\n if (errorName === InitiateAuthException.PasswordResetRequiredException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'RESET_PASSWORD' },\n };\n }\n else if (errorName === InitiateAuthException.UserNotConfirmedException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'CONFIRM_SIGN_UP' },\n };\n }\n}\nexport function parseAttributes(attributes) {\n if (!attributes)\n return [];\n const parsedAttributes = JSON.parse(attributes).map(att => att.includes(USER_ATTRIBUTES) ? att.replace(USER_ATTRIBUTES, '') : att);\n return parsedAttributes;\n}\nexport function createAttributes(attributes) {\n if (!attributes)\n return {};\n const newAttributes = {};\n Object.entries(attributes).forEach(([key, value]) => {\n if (value)\n newAttributes[`${USER_ATTRIBUTES}${key}`] = value;\n });\n return newAttributes;\n}\nexport async function handleChallengeName(username, challengeName, session, challengeResponse, config, tokenOrchestrator, clientMetadata, options) {\n const userAttributes = options?.userAttributes;\n const deviceName = options?.friendlyDeviceName;\n switch (challengeName) {\n case 'WEB_AUTHN':\n case 'SELECT_CHALLENGE':\n if (challengeResponse === 'PASSWORD_SRP' ||\n challengeResponse === 'PASSWORD') {\n return {\n ChallengeName: challengeResponse,\n Session: session,\n $metadata: {},\n };\n }\n return initiateSelectedChallenge({\n username,\n session,\n selectedChallenge: challengeResponse,\n config,\n clientMetadata,\n });\n case 'SELECT_MFA_TYPE':\n return handleSelectMFATypeChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'MFA_SETUP':\n return handleMFASetupChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n deviceName,\n config,\n });\n case 'NEW_PASSWORD_REQUIRED':\n return handleCompleteNewPasswordChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n requiredAttributes: userAttributes,\n config,\n });\n case 'CUSTOM_CHALLENGE':\n return retryOnResourceNotFoundException(handleCustomChallenge, [\n {\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n },\n ], username, tokenOrchestrator);\n case 'SMS_MFA':\n case 'SOFTWARE_TOKEN_MFA':\n case 'SMS_OTP':\n case 'EMAIL_OTP':\n return handleMFAChallenge({\n challengeName,\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n });\n case 'PASSWORD':\n return handleSelectChallengeWithPassword(username, challengeResponse, clientMetadata, config, session);\n case 'PASSWORD_SRP':\n return handleSelectChallengeWithPasswordSRP(username, challengeResponse, // This is the actual password\n clientMetadata, config, session, tokenOrchestrator);\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `An error occurred during the sign in process.\n\t\t${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function mapMfaType(mfa) {\n let mfaType = 'SMS_MFA';\n if (mfa === 'TOTP')\n mfaType = 'SOFTWARE_TOKEN_MFA';\n if (mfa === 'EMAIL')\n mfaType = 'EMAIL_OTP';\n return mfaType;\n}\nexport function getMFAType(type) {\n if (type === 'SMS_MFA')\n return 'SMS';\n if (type === 'SOFTWARE_TOKEN_MFA')\n return 'TOTP';\n if (type === 'EMAIL_OTP')\n return 'EMAIL';\n // TODO: log warning for unknown MFA type\n}\nexport function getMFATypes(types) {\n if (!types)\n return undefined;\n return types.map(getMFAType).filter(Boolean);\n}\nexport function parseMFATypes(mfa) {\n if (!mfa)\n return [];\n return JSON.parse(mfa);\n}\nexport function getAllowedMfaSetupTypes(availableMfaSetupTypes) {\n return availableMfaSetupTypes.filter(authMfaType => authMfaType === 'EMAIL' || authMfaType === 'TOTP');\n}\nexport async function assertUserNotAuthenticated() {\n let authUser;\n try {\n authUser = await getCurrentUser();\n }\n catch (error) { }\n if (authUser && authUser.userId && authUser.username) {\n throw new AuthError({\n name: USER_ALREADY_AUTHENTICATED_EXCEPTION,\n message: 'There is already a signed in user.',\n recoverySuggestion: 'Call signOut before calling signIn again.',\n });\n }\n}\nexport function getActiveSignInUsername(username) {\n const state = signInStore.getState();\n return state.username ?? username;\n}\nexport async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n };\n if (challengeName === 'EMAIL_OTP') {\n challengeResponses.EMAIL_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_MFA') {\n challengeResponses.SMS_MFA_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_OTP') {\n challengeResponses.SMS_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;\n }\n const userContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: challengeName,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData: userContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signInHelpers.mjs","sources":["../../../../../src/providers/cognito/utils/signInHelpers.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 { AmplifyUrl, AuthAction, assertTokenProviderConfig, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { InitiateAuthException } from '../types/errors';\nimport { AuthErrorCodes } from '../../../common/AuthErrorStrings';\nimport { AuthValidationErrorCode } from '../../../errors/types/validation';\nimport { assertValidationError } from '../../../errors/utils/assertValidationError';\nimport { USER_ALREADY_AUTHENTICATED_EXCEPTION } from '../../../errors/constants';\nimport { getCurrentUser } from '../apis/getCurrentUser';\nimport { getAuthUserAgentValue } from '../../../utils';\nimport { createAssociateSoftwareTokenClient, createInitiateAuthClient, createRespondToAuthChallengeClient, createVerifySoftwareTokenClient, } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';\nimport { createCognitoUserPoolEndpointResolver } from '../factories';\nimport { getRegionFromUserPoolId } from '../../../foundation/parsers';\nimport { handleWebAuthnSignInResult } from '../../../client/flows/userAuth/handleWebAuthnSignInResult';\nimport { handlePasswordSRP } from '../../../client/flows/shared/handlePasswordSRP';\nimport { initiateSelectedChallenge } from '../../../client/flows/userAuth/handleSelectChallenge';\nimport { handleSelectChallengeWithPassword } from '../../../client/flows/userAuth/handleSelectChallengeWithPassword';\nimport { handleSelectChallengeWithPasswordSRP } from '../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP';\nimport { signInStore } from '../../../client/utils/store';\nimport { getAuthenticationHelper } from './srp';\nimport { getUserContextData } from './userContextData';\nimport { handlePasswordVerifierChallenge } from './handlePasswordVerifierChallenge';\nimport { handleDeviceSRPAuth } from './handleDeviceSRPAuth';\nimport { retryOnResourceNotFoundException } from './retryOnResourceNotFoundException';\nimport { setActiveSignInUsername } from './setActiveSignInUsername';\nconst USER_ATTRIBUTES = 'userAttributes.';\nfunction isWebAuthnResultAuthSignInOutput(result) {\n return 'isSignedIn' in result && 'nextStep' in result;\n}\nexport async function handleCustomChallenge({ challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n ANSWER: challengeResponse,\n };\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return handleDeviceSRPAuth({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\nexport async function handleMFASetupChallenge({ challengeResponse, username, clientMetadata, session, deviceName, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n if (challengeResponse === 'EMAIL') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"EMAIL_OTP\"]',\n },\n $metadata: {},\n };\n }\n if (challengeResponse === 'TOTP') {\n return {\n ChallengeName: 'MFA_SETUP',\n Session: session,\n ChallengeParameters: {\n MFAS_CAN_SETUP: '[\"SOFTWARE_TOKEN_MFA\"]',\n },\n $metadata: {},\n };\n }\n const challengeResponses = {\n USERNAME: username,\n };\n const isTOTPCode = /^\\d+$/.test(challengeResponse);\n if (isTOTPCode) {\n const verifySoftwareToken = createVerifySoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { Session } = await verifySoftwareToken({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, {\n UserCode: challengeResponse,\n Session: session,\n FriendlyDeviceName: deviceName,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n const isEmail = challengeResponse.includes('@');\n if (isEmail) {\n challengeResponses.EMAIL = challengeResponse;\n const jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot proceed with MFA setup using challengeResponse: ${challengeResponse}`,\n recoverySuggestion: 'Try passing \"EMAIL\", \"TOTP\", a valid email, or OTP code as the challengeResponse.',\n });\n}\nexport async function handleSelectMFATypeChallenge({ challengeResponse, username, clientMetadata, session, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n assertValidationError(challengeResponse === 'TOTP' ||\n challengeResponse === 'SMS' ||\n challengeResponse === 'EMAIL', AuthValidationErrorCode.IncorrectMFAMethod);\n const challengeResponses = {\n USERNAME: username,\n ANSWER: mapMfaType(challengeResponse),\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleCompleteNewPasswordChallenge({ challengeResponse, clientMetadata, session, username, requiredAttributes, config, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n ...createAttributes(requiredAttributes),\n NEW_PASSWORD: challengeResponse,\n USERNAME: username,\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ChallengeResponses: challengeResponses,\n ClientMetadata: clientMetadata,\n Session: session,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const respondToAuthChallenge = createRespondToAuthChallengeClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n return respondToAuthChallenge({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),\n }, jsonReq);\n}\nexport async function handleUserPasswordAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n PASSWORD: password,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 const activeUsername = response.ChallengeParameters?.USERNAME ??\n response.ChallengeParameters?.USER_ID_FOR_SRP ??\n username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleUserSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n return handlePasswordSRP({\n username,\n password,\n clientMetadata,\n config,\n tokenOrchestrator,\n authFlow: 'USER_SRP_AUTH',\n });\n}\nexport async function handleCustomAuthFlowWithoutSRP(username, clientMetadata, config, tokenOrchestrator) {\n const { userPoolClientId, userPoolId, userPoolEndpoint } = config;\n const authParameters = {\n USERNAME: username,\n };\n const deviceMetadata = await tokenOrchestrator.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n authParameters.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\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 const activeUsername = response.ChallengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH')\n return handleDeviceSRPAuth({\n username: activeUsername,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n return response;\n}\nexport async function handleCustomSRPAuthFlow(username, password, clientMetadata, config, tokenOrchestrator) {\n assertTokenProviderConfig(config);\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const userPoolName = userPoolId?.split('_')[1] || '';\n const authenticationHelper = await getAuthenticationHelper(userPoolName);\n const authParameters = {\n USERNAME: username,\n SRP_A: authenticationHelper.A.toString(16),\n CHALLENGE_NAME: 'SRP_A',\n };\n const UserContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData,\n };\n const initiateAuth = createInitiateAuthClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: userPoolEndpoint,\n }),\n });\n const { ChallengeParameters: challengeParameters, Session: session } = await initiateAuth({\n region: getRegionFromUserPoolId(userPoolId),\n userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),\n }, jsonReq);\n const activeUsername = challengeParameters?.USERNAME ?? username;\n setActiveSignInUsername(activeUsername);\n return retryOnResourceNotFoundException(handlePasswordVerifierChallenge, [\n password,\n challengeParameters,\n clientMetadata,\n session,\n authenticationHelper,\n config,\n tokenOrchestrator,\n ], activeUsername, tokenOrchestrator);\n}\nexport async function getSignInResult(params) {\n const { challengeName, challengeParameters, availableChallenges } = params;\n const authConfig = Amplify.getConfig().Auth?.Cognito;\n assertTokenProviderConfig(authConfig);\n switch (challengeName) {\n case 'CUSTOM_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE',\n additionalInfo: challengeParameters,\n },\n };\n case 'MFA_SETUP': {\n const { signInSession, username } = signInStore.getState();\n const mfaSetupTypes = getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_SETUP)) || [];\n const allowedMfaSetupTypes = getAllowedMfaSetupTypes(mfaSetupTypes);\n const isTotpMfaSetupAvailable = allowedMfaSetupTypes.includes('TOTP');\n const isEmailMfaSetupAvailable = allowedMfaSetupTypes.includes('EMAIL');\n if (isTotpMfaSetupAvailable && isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION',\n allowedMFATypes: allowedMfaSetupTypes,\n },\n };\n }\n if (isEmailMfaSetupAvailable) {\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP',\n },\n };\n }\n if (isTotpMfaSetupAvailable) {\n const associateSoftwareToken = createAssociateSoftwareTokenClient({\n endpointResolver: createCognitoUserPoolEndpointResolver({\n endpointOverride: authConfig.userPoolEndpoint,\n }),\n });\n const { Session, SecretCode: secretCode } = await associateSoftwareToken({ region: getRegionFromUserPoolId(authConfig.userPoolId) }, {\n Session: signInSession,\n });\n signInStore.dispatch({\n type: 'SET_SIGN_IN_SESSION',\n value: Session,\n });\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP',\n totpSetupDetails: getTOTPSetupDetails(secretCode, username),\n },\n };\n }\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `Cannot initiate MFA setup from available types: ${mfaSetupTypes}`,\n });\n }\n case 'NEW_PASSWORD_REQUIRED':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED',\n missingAttributes: parseAttributes(challengeParameters.requiredAttributes),\n },\n };\n case 'SELECT_MFA_TYPE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION',\n allowedMFATypes: getMFATypes(parseMFATypes(challengeParameters.MFAS_CAN_CHOOSE)),\n },\n };\n case 'SMS_OTP':\n case 'SMS_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_SMS_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'SOFTWARE_TOKEN_MFA':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_TOTP_CODE',\n },\n };\n case 'EMAIL_OTP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE',\n codeDeliveryDetails: {\n deliveryMedium: challengeParameters.CODE_DELIVERY_DELIVERY_MEDIUM,\n destination: challengeParameters.CODE_DELIVERY_DESTINATION,\n },\n },\n };\n case 'WEB_AUTHN': {\n const result = await handleWebAuthnSignInResult(challengeParameters);\n if (isWebAuthnResultAuthSignInOutput(result)) {\n return result;\n }\n return getSignInResult(result);\n }\n case 'PASSWORD':\n case 'PASSWORD_SRP':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',\n },\n };\n case 'SELECT_CHALLENGE':\n return {\n isSignedIn: false,\n nextStep: {\n signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',\n availableChallenges,\n },\n };\n case 'ADMIN_NO_SRP_AUTH':\n break;\n case 'DEVICE_PASSWORD_VERIFIER':\n break;\n case 'DEVICE_SRP_AUTH':\n break;\n case 'PASSWORD_VERIFIER':\n break;\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: 'An error occurred during the sign in process. ' +\n `${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function getTOTPSetupDetails(secretCode, username) {\n return {\n sharedSecret: secretCode,\n getSetupUri: (appName, accountName) => {\n const totpUri = `otpauth://totp/${appName}:${accountName ?? username}?secret=${secretCode}&issuer=${appName}`;\n return new AmplifyUrl(totpUri);\n },\n };\n}\nexport function getSignInResultFromError(errorName) {\n if (errorName === InitiateAuthException.PasswordResetRequiredException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'RESET_PASSWORD' },\n };\n }\n else if (errorName === InitiateAuthException.UserNotConfirmedException) {\n return {\n isSignedIn: false,\n nextStep: { signInStep: 'CONFIRM_SIGN_UP' },\n };\n }\n}\nexport function parseAttributes(attributes) {\n if (!attributes)\n return [];\n const parsedAttributes = JSON.parse(attributes).map(att => att.includes(USER_ATTRIBUTES) ? att.replace(USER_ATTRIBUTES, '') : att);\n return parsedAttributes;\n}\nexport function createAttributes(attributes) {\n if (!attributes)\n return {};\n const newAttributes = {};\n Object.entries(attributes).forEach(([key, value]) => {\n if (value)\n newAttributes[`${USER_ATTRIBUTES}${key}`] = value;\n });\n return newAttributes;\n}\nexport async function handleChallengeName(username, challengeName, session, challengeResponse, config, tokenOrchestrator, clientMetadata, options) {\n const userAttributes = options?.userAttributes;\n const deviceName = options?.friendlyDeviceName;\n switch (challengeName) {\n case 'WEB_AUTHN':\n case 'SELECT_CHALLENGE':\n if (challengeResponse === 'PASSWORD_SRP' ||\n challengeResponse === 'PASSWORD') {\n return {\n ChallengeName: challengeResponse,\n Session: session,\n $metadata: {},\n };\n }\n return initiateSelectedChallenge({\n username,\n session,\n selectedChallenge: challengeResponse,\n config,\n clientMetadata,\n });\n case 'SELECT_MFA_TYPE':\n return handleSelectMFATypeChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n });\n case 'MFA_SETUP':\n return handleMFASetupChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n deviceName,\n config,\n tokenOrchestrator,\n });\n case 'NEW_PASSWORD_REQUIRED':\n return handleCompleteNewPasswordChallenge({\n challengeResponse,\n clientMetadata,\n session,\n username,\n requiredAttributes: userAttributes,\n config,\n tokenOrchestrator,\n });\n case 'CUSTOM_CHALLENGE':\n return retryOnResourceNotFoundException(handleCustomChallenge, [\n {\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n },\n ], username, tokenOrchestrator);\n case 'SMS_MFA':\n case 'SOFTWARE_TOKEN_MFA':\n case 'SMS_OTP':\n case 'EMAIL_OTP':\n return handleMFAChallenge({\n challengeName,\n challengeResponse,\n clientMetadata,\n session,\n username,\n config,\n tokenOrchestrator,\n });\n case 'PASSWORD':\n return handleSelectChallengeWithPassword(username, challengeResponse, clientMetadata, config, session);\n case 'PASSWORD_SRP':\n return handleSelectChallengeWithPasswordSRP(username, challengeResponse, // This is the actual password\n clientMetadata, config, session, tokenOrchestrator);\n }\n // TODO: remove this error message for production apps\n throw new AuthError({\n name: AuthErrorCodes.SignInException,\n message: `An error occurred during the sign in process.\n\t\t${challengeName} challengeName returned by the underlying service was not addressed.`,\n });\n}\nexport function mapMfaType(mfa) {\n let mfaType = 'SMS_MFA';\n if (mfa === 'TOTP')\n mfaType = 'SOFTWARE_TOKEN_MFA';\n if (mfa === 'EMAIL')\n mfaType = 'EMAIL_OTP';\n return mfaType;\n}\nexport function getMFAType(type) {\n if (type === 'SMS_MFA')\n return 'SMS';\n if (type === 'SOFTWARE_TOKEN_MFA')\n return 'TOTP';\n if (type === 'EMAIL_OTP')\n return 'EMAIL';\n // TODO: log warning for unknown MFA type\n}\nexport function getMFATypes(types) {\n if (!types)\n return undefined;\n return types.map(getMFAType).filter(Boolean);\n}\nexport function parseMFATypes(mfa) {\n if (!mfa)\n return [];\n return JSON.parse(mfa);\n}\nexport function getAllowedMfaSetupTypes(availableMfaSetupTypes) {\n return availableMfaSetupTypes.filter(authMfaType => authMfaType === 'EMAIL' || authMfaType === 'TOTP');\n}\nexport async function assertUserNotAuthenticated() {\n let authUser;\n try {\n authUser = await getCurrentUser();\n }\n catch (error) { }\n if (authUser && authUser.userId && authUser.username) {\n throw new AuthError({\n name: USER_ALREADY_AUTHENTICATED_EXCEPTION,\n message: 'There is already a signed in user.',\n recoverySuggestion: 'Call signOut before calling signIn again.',\n });\n }\n}\nexport function getActiveSignInUsername(username) {\n const state = signInStore.getState();\n return state.username ?? username;\n}\nexport async function handleMFAChallenge({ challengeName, challengeResponse, clientMetadata, session, username, config, tokenOrchestrator, }) {\n const { userPoolId, userPoolClientId, userPoolEndpoint } = config;\n const challengeResponses = {\n USERNAME: username,\n };\n if (challengeName === 'EMAIL_OTP') {\n challengeResponses.EMAIL_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_MFA') {\n challengeResponses.SMS_MFA_CODE = challengeResponse;\n }\n if (challengeName === 'SMS_OTP') {\n challengeResponses.SMS_OTP_CODE = challengeResponse;\n }\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;\n }\n const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);\n if (deviceMetadata && deviceMetadata.deviceKey) {\n challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;\n }\n const userContextData = getUserContextData({\n username,\n userPoolId,\n userPoolClientId,\n });\n const jsonReq = {\n ChallengeName: challengeName,\n ChallengeResponses: challengeResponses,\n Session: session,\n ClientMetadata: clientMetadata,\n ClientId: userPoolClientId,\n UserContextData: userContextData,\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 }, jsonReq);\n if (response.ChallengeName === 'DEVICE_SRP_AUTH') {\n return handleDeviceSRPAuth({\n username,\n config,\n clientMetadata,\n session: response.Session,\n tokenOrchestrator,\n });\n }\n return response;\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,113 +1,113 @@
1
1
  {
2
- "name": "@aws-amplify/auth",
3
- "version": "6.17.0",
4
- "description": "Auth category of aws-amplify",
5
- "main": "./dist/cjs/index.js",
6
- "module": "./dist/esm/index.mjs",
7
- "typings": "./dist/esm/index.d.ts",
8
- "react-native": "./dist/cjs/index.js",
9
- "sideEffects": [
10
- "./dist/cjs/providers/cognito/apis/signInWithRedirect.js",
11
- "./dist/esm/providers/cognito/apis/signInWithRedirect.mjs",
12
- "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js",
13
- "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs"
14
- ],
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
- "scripts": {
19
- "test": "yarn lint --fix && jest -w 1 --coverage --logHeapUsage",
20
- "build-with-test": "npm test && npm run build",
21
- "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
22
- "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
23
- "build:watch": "npm run build:esm-cjs -- --watch",
24
- "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
25
- "clean": "npm run clean:size && rimraf lib-esm lib dist",
26
- "clean:size": "rimraf dual-publish-tmp tmp*",
27
- "format": "echo \"Not implemented\"",
28
- "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
29
- "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
30
- "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 91.18"
31
- },
32
- "typesVersions": {
33
- ">=4.2": {
34
- "cognito": [
35
- "./dist/esm/providers/cognito/index.d.ts"
36
- ],
37
- "cognito/server": [
38
- "./dist/esm/providers/cognito/apis/server/index.d.ts"
39
- ],
40
- "server": [
41
- "./dist/esm/server.d.ts"
42
- ]
43
- }
44
- },
45
- "exports": {
46
- ".": {
47
- "react-native": "./dist/cjs/index.js",
48
- "types": "./dist/esm/index.d.ts",
49
- "import": "./dist/esm/index.mjs",
50
- "require": "./dist/cjs/index.js"
51
- },
52
- "./cognito": {
53
- "react-native": "./dist/cjs/providers/cognito/index.js",
54
- "types": "./dist/esm/providers/cognito/index.d.ts",
55
- "import": "./dist/esm/providers/cognito/index.mjs",
56
- "require": "./dist/cjs/providers/cognito/index.js"
57
- },
58
- "./cognito/server": {
59
- "types": "./dist/esm/providers/cognito/apis/server/index.d.ts",
60
- "import": "./dist/esm/providers/cognito/apis/server/index.mjs",
61
- "require": "./dist/cjs/providers/cognito/apis/server/index.js"
62
- },
63
- "./server": {
64
- "types": "./dist/esm/server.d.ts",
65
- "import": "./dist/esm/server.mjs",
66
- "require": "./dist/cjs/server.js"
67
- },
68
- "./enable-oauth-listener": {
69
- "types": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.d.ts",
70
- "import": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs",
71
- "require": "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js"
72
- },
73
- "./package.json": "./package.json"
74
- },
75
- "repository": {
76
- "type": "git",
77
- "url": "https://github.com/aws-amplify/amplify-js.git"
78
- },
79
- "author": "Amazon Web Services",
80
- "license": "Apache-2.0",
81
- "bugs": {
82
- "url": "https://github.com/aws/aws-amplify/issues"
83
- },
84
- "homepage": "https://aws-amplify.github.io/",
85
- "files": [
86
- "dist/cjs",
87
- "dist/esm",
88
- "src",
89
- "cognito",
90
- "server",
91
- "enable-oauth-listener"
92
- ],
93
- "dependencies": {
94
- "@aws-crypto/sha256-js": "5.2.0",
95
- "@smithy/types": "^3.3.0",
96
- "tslib": "^2.5.0"
97
- },
98
- "peerDependencies": {
99
- "@aws-amplify/core": "^6.1.0",
100
- "@aws-amplify/react-native": "^1.1.10"
101
- },
102
- "peerDependenciesMeta": {
103
- "@aws-amplify/react-native": {
104
- "optional": true
105
- }
106
- },
107
- "devDependencies": {
108
- "@aws-amplify/core": "6.14.0",
109
- "@aws-amplify/react-native": "1.3.0",
110
- "@jest/test-sequencer": "^29.7.0"
111
- },
112
- "gitHead": "bcb7c416052db16e7e329b2ac44fadc564274e2b"
2
+ "name": "@aws-amplify/auth",
3
+ "version": "6.17.1-unstable.91c2933.0+91c2933",
4
+ "description": "Auth category of aws-amplify",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.mjs",
7
+ "typings": "./dist/esm/index.d.ts",
8
+ "react-native": "./dist/cjs/index.js",
9
+ "sideEffects": [
10
+ "./dist/cjs/providers/cognito/apis/signInWithRedirect.js",
11
+ "./dist/esm/providers/cognito/apis/signInWithRedirect.mjs",
12
+ "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js",
13
+ "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "test": "yarn lint --fix && jest -w 1 --coverage --logHeapUsage",
20
+ "build-with-test": "npm test && npm run build",
21
+ "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
22
+ "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
23
+ "build:watch": "npm run build:esm-cjs -- --watch",
24
+ "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
25
+ "clean": "npm run clean:size && rimraf lib-esm lib dist",
26
+ "clean:size": "rimraf dual-publish-tmp tmp*",
27
+ "format": "echo \"Not implemented\"",
28
+ "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
29
+ "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
30
+ "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 91.18"
31
+ },
32
+ "typesVersions": {
33
+ ">=4.2": {
34
+ "cognito": [
35
+ "./dist/esm/providers/cognito/index.d.ts"
36
+ ],
37
+ "cognito/server": [
38
+ "./dist/esm/providers/cognito/apis/server/index.d.ts"
39
+ ],
40
+ "server": [
41
+ "./dist/esm/server.d.ts"
42
+ ]
43
+ }
44
+ },
45
+ "exports": {
46
+ ".": {
47
+ "react-native": "./dist/cjs/index.js",
48
+ "types": "./dist/esm/index.d.ts",
49
+ "import": "./dist/esm/index.mjs",
50
+ "require": "./dist/cjs/index.js"
51
+ },
52
+ "./cognito": {
53
+ "react-native": "./dist/cjs/providers/cognito/index.js",
54
+ "types": "./dist/esm/providers/cognito/index.d.ts",
55
+ "import": "./dist/esm/providers/cognito/index.mjs",
56
+ "require": "./dist/cjs/providers/cognito/index.js"
57
+ },
58
+ "./cognito/server": {
59
+ "types": "./dist/esm/providers/cognito/apis/server/index.d.ts",
60
+ "import": "./dist/esm/providers/cognito/apis/server/index.mjs",
61
+ "require": "./dist/cjs/providers/cognito/apis/server/index.js"
62
+ },
63
+ "./server": {
64
+ "types": "./dist/esm/server.d.ts",
65
+ "import": "./dist/esm/server.mjs",
66
+ "require": "./dist/cjs/server.js"
67
+ },
68
+ "./enable-oauth-listener": {
69
+ "types": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.d.ts",
70
+ "import": "./dist/esm/providers/cognito/utils/oauth/enableOAuthListener.mjs",
71
+ "require": "./dist/cjs/providers/cognito/utils/oauth/enableOAuthListener.js"
72
+ },
73
+ "./package.json": "./package.json"
74
+ },
75
+ "repository": {
76
+ "type": "git",
77
+ "url": "https://github.com/aws-amplify/amplify-js.git"
78
+ },
79
+ "author": "Amazon Web Services",
80
+ "license": "Apache-2.0",
81
+ "bugs": {
82
+ "url": "https://github.com/aws/aws-amplify/issues"
83
+ },
84
+ "homepage": "https://aws-amplify.github.io/",
85
+ "files": [
86
+ "dist/cjs",
87
+ "dist/esm",
88
+ "src",
89
+ "cognito",
90
+ "server",
91
+ "enable-oauth-listener"
92
+ ],
93
+ "dependencies": {
94
+ "@aws-crypto/sha256-js": "5.2.0",
95
+ "@smithy/types": "^3.3.0",
96
+ "tslib": "^2.5.0"
97
+ },
98
+ "peerDependencies": {
99
+ "@aws-amplify/core": "6.14.1-unstable.91c2933.0+91c2933",
100
+ "@aws-amplify/react-native": "^1.1.10"
101
+ },
102
+ "peerDependenciesMeta": {
103
+ "@aws-amplify/react-native": {
104
+ "optional": true
105
+ }
106
+ },
107
+ "devDependencies": {
108
+ "@aws-amplify/core": "6.14.1-unstable.91c2933.0+91c2933",
109
+ "@aws-amplify/react-native": "1.3.1-unstable.91c2933.0+91c2933",
110
+ "@jest/test-sequencer": "^29.7.0"
111
+ },
112
+ "gitHead": "91c2933d33ed307e0f53577f6291896275d9696b"
113
113
  }
@@ -71,6 +71,7 @@ interface HandleAuthChallengeRequest {
71
71
  deviceName?: string;
72
72
  requiredAttributes?: AuthUserAttributes;
73
73
  config: CognitoUserPoolConfig;
74
+ tokenOrchestrator: AuthTokenOrchestrator;
74
75
  }
75
76
 
76
77
  function isWebAuthnResultAuthSignInOutput(
@@ -834,6 +835,7 @@ export async function handleChallengeName(
834
835
  session,
835
836
  username,
836
837
  config,
838
+ tokenOrchestrator,
837
839
  });
838
840
  case 'MFA_SETUP':
839
841
  return handleMFASetupChallenge({
@@ -843,6 +845,7 @@ export async function handleChallengeName(
843
845
  username,
844
846
  deviceName,
845
847
  config,
848
+ tokenOrchestrator,
846
849
  });
847
850
  case 'NEW_PASSWORD_REQUIRED':
848
851
  return handleCompleteNewPasswordChallenge({
@@ -852,6 +855,7 @@ export async function handleChallengeName(
852
855
  username,
853
856
  requiredAttributes: userAttributes,
854
857
  config,
858
+ tokenOrchestrator,
855
859
  });
856
860
  case 'CUSTOM_CHALLENGE':
857
861
  return retryOnResourceNotFoundException(
@@ -880,6 +884,7 @@ export async function handleChallengeName(
880
884
  session,
881
885
  username,
882
886
  config,
887
+ tokenOrchestrator,
883
888
  });
884
889
  case 'PASSWORD':
885
890
  return handleSelectChallengeWithPassword(
@@ -967,6 +972,7 @@ export async function handleMFAChallenge({
967
972
  session,
968
973
  username,
969
974
  config,
975
+ tokenOrchestrator,
970
976
  }: HandleAuthChallengeRequest & {
971
977
  challengeName: Extract<
972
978
  ChallengeName,
@@ -995,6 +1001,11 @@ export async function handleMFAChallenge({
995
1001
  challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;
996
1002
  }
997
1003
 
1004
+ const deviceMetadata = await tokenOrchestrator?.getDeviceMetadata(username);
1005
+ if (deviceMetadata && deviceMetadata.deviceKey) {
1006
+ challengeResponses.DEVICE_KEY = deviceMetadata.deviceKey;
1007
+ }
1008
+
998
1009
  const userContextData = getUserContextData({
999
1010
  username,
1000
1011
  userPoolId,
@@ -1016,11 +1027,22 @@ export async function handleMFAChallenge({
1016
1027
  }),
1017
1028
  });
1018
1029
 
1019
- return respondToAuthChallenge(
1030
+ const response = await respondToAuthChallenge(
1020
1031
  {
1021
1032
  region: getRegionFromUserPoolId(userPoolId),
1022
1033
  userAgentValue: getAuthUserAgentValue(AuthAction.ConfirmSignIn),
1023
1034
  },
1024
1035
  jsonReq,
1025
1036
  );
1037
+ if (response.ChallengeName === 'DEVICE_SRP_AUTH') {
1038
+ return handleDeviceSRPAuth({
1039
+ username,
1040
+ config,
1041
+ clientMetadata,
1042
+ session: response.Session,
1043
+ tokenOrchestrator,
1044
+ });
1045
+ }
1046
+
1047
+ return response;
1026
1048
  }