我正在通过构建演示来研究AWSCognito。现在我可以设置用户MFA首选项以启用SMS和/或TOTP,并将其中一个设置为首选MFA类型。然后,下次用户身份验证时,用户将根据首选MFA类型接受SMS或TOTP校验码。
我的问题是,如果用户想在初始密码验证后但在MFA响应之前切换MFA类型怎么办?例如,用户可能在手机以外的其他设备上TOTP。用户将SMS设置为首选MFA类型,但在发送密码并被要求提供SMS校验码后,他意识到他没有手机,但TOTP设备可用。此时用户如何切换到TOTP?或者,如果用户偏好TOTP但他想在同一情况下切换到SMS?API打电话?
我无法从文档中找到一个API的方法来调用。也许这只能通过lambda触发器来实现?在我看来,这是一种相当常见的情况,应该提供一个示例/API方法。
最好的问候,
必应
您可以允许用户在SMSMFA
之间进行选择
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
,否则将抛出错误。
在设置这些更改之后,当调用用户认证功能时,它将给出用于MFA质询的选项选择。