AWS Cognito:是否存在在身份验证期间切换MFA类型的方法?

时间:2018-07-04 02:36:47

标签: amazon-web-services authentication amazon-cognito multi-factor-authentication mfa

我正在通过构建演示研究AWS Cognito。现在,我可以设置用户MFA首选项以启用SMS和/或TOTP,并将其中之一设置为首选MFA类型。然后,下次用户进行身份验证时,将根据首选MFA类型向用户询问SMS或TOTP验证码。

我的问题是,如果用户想在初始密码验证之后但在MFA响应之前切换MFA类型,该怎么办?例如,用户可能在手机以外的其他设备上拥有TOTP。用户将SMS设置为首选的MFA类型,但是在发送密码并被要求提供SMS验证码后,他意识到自己没有手机,但可以使用TOTP设备。用户此时如何才能切换到TOTP?或者,如果用户偏好为TOTP,但他希望在相同情况下切换到SMS?调用什么API?

我找不到要从文档中调用的API方法。也许只能通过lambda触发器来实现?我认为这是一种相当普遍的情况,应提供一个示例/ API方法。

最诚挚的问候,

Bing

1 个答案:

答案 0 :(得分:0)

如果用户同时设置了两个MFA,但没有一个被选为首选,则可以允许用户在SMS MFATOTP MFA之间进行选择。以下python代码可以做到这一点:

client = boto3.client('cognito-idp')
response = client.set_user_mfa_preference(
SMSMfaSettings={
    'Enabled': True,
    'PreferredMfa': False
},
SoftwareTokenMfaSettings={
    'Enabled': True,
    'PreferredMfa': False
},
AccessToken=accessToken
)

注意:用户必须先将TOTPTOTP关联,然后才能将MFA设为.defaultSuccessUrl("/?success=true"),否则会引发错误。

设置这些更改后,当您调用用户身份验证功能时,它将提供用于选择质询中的MFA的选项。