@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