@startuml title Email MFA Sequence Client -> Cognito: InitiateAuth\n - AuthFlow: CustomFlow\n - ChallengeName: SRP_A Cognito -> Lambda: DefineAuthChallenge\n - ChallengeName: SRP_A\n - ChallengeResult: True Cognito <- Lambda: Next ChallengeName: PASSWORD_VERIFIER Client <- Cognito: Next ChallengeName: PASSWORD_VERIFIER Client -> Cognito: RespondToAuthChallenge\n - ChallengeName: PASSWORD_VERIFIER\n - Cognito -> Cognito: Verify Password Cognito -> Lambda: DefineAuthChallenge\n - ChallengeName: PASSWORD_VERIFIER\n - ChallengeResult: True Cognito <- Lambda: Next ChallengeName: CUSTOM_CHALLENGE Cognito -> Lambda: CreateAuthChallenge\n - ChallengeName: CUSTOM_CHALLENGE Lambda -> SES: Send Email\n - Cognito <- Lambda: PrivateChallengeParameters\n - Client <- Cognito: Next ChallengeName:CUSTOM_CHALLENGE Client -> Cognito: RespondToAuthChallenge\n - ChallengeName: CUSTOM_CHALLENGE\n - ChallengeResponses: Cognito -> Lambda: VerifyAuthChallengeResponse\n - ChallengeAnswer: \n - PrivateChallengeParameters: Cognito <- Lambda: Verification Result Cognito -> Lambda: DefineAuthChallenge\n - ChallengeName: CUSTOM_CHALLENGE\n - ChallengeResult: True Cognito <- Lambda: IssueTokens: True Client <- Cognito: IdToken\nAccessToken\nRefreshToken @enduml