我正在通过构建演示研究AWS Cognito。现在,我可以设置用户MFA首选项以启用SMS和/或TOTP,并将其中之一设置为首选MFA类型。然后,下次用户进行身份验证时,将根据首选MFA类型向用户询问SMS或TOTP验证码。
我的问题是,如果用户想在初始密码验证之后但在MFA响应之前切换MFA类型,该怎么办?例如,用户可能在手机以外的其他设备上拥有TOTP。用户将SMS设置为首选的MFA类型,但是在发送密码并被要求提供SMS验证码后,他意识到自己没有手机,但可以使用TOTP设备。用户此时如何才能切换到TOTP?或者,如果用户偏好为TOTP,但他希望在相同情况下切换到SMS?调用什么API?
我找不到要从文档中调用的API方法。也许只能通过lambda触发器来实现?我认为这是一种相当普遍的情况,应提供一个示例/ API方法。
最诚挚的问候,
Bing
答案 0 :(得分:0)
如果用户同时设置了两个MFA,但没有一个被选为首选,则可以允许用户在SMS MFA
和TOTP 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
)
注意:用户必须先将TOTP
与TOTP
关联,然后才能将MFA
设为.defaultSuccessUrl("/?success=true")
,否则会引发错误。
设置这些更改后,当您调用用户身份验证功能时,它将提供用于选择质询中的MFA的选项。