提问者:小点点

AWSCognito:是否有方法在身份验证期间切换MFA类型?


我正在通过构建演示来研究AWSCognito。现在我可以设置用户MFA首选项以启用SMS和/或TOTP,并将其中一个设置为首选MFA类型。然后,下次用户身份验证时,用户将根据首选MFA类型接受SMS或TOTP校验码。

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

我无法从文档中找到一个API的方法来调用。也许这只能通过lambda触发器来实现?在我看来,这是一种相当常见的情况,应该提供一个示例/API方法。

最好的问候,

必应


共1个答案

匿名用户

您可以允许用户在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质询的选项选择。