2

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

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

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

此致,

必应

4

1 回答 1

1

您可以允许用户在SMS MFA&之间进行选择TOTP MFA,如果用户设置了两个 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在启用TOTPas之前进行关联MFA,否则会抛出错误。

在调用用户身份验证功能时设置这些更改后,它将在挑战中提供选择 MFA 的选项。

于 2019-12-24T04:17:57.437 回答