首页 > 解决方案 > Cognito 中是否有一项规定可以帮助确定用户是否在用户池中设置了他的 MFA?

问题描述

如果在用户池级别启用 MFA(TOTP),则默认情况下,池内的每个用户都启用 MFA。我需要区分已设置 MFA 的用户和尚未设置 MFA 的用户。(设置是通过谷歌身份验证器等应用程序注册基于 TOTP 的身份验证)

为了确定上述内容,我尝试使用GetUser API 获取用户对象信息。如果响应包含"UserMFASettingList": [ "string" ]我假定用户已经设置了 MFA,但这种方法在某些情况下失败。例如,对于尚未设置 MFA 并且他禁用然后再次启用 MFA 的用户,他也填充了上述属性,因此检查此属性不起作用。我已经使用AdminSetUserMFAPreference API 来实现启用和禁用。

是否有任何明确的 API 或方法等可以帮助我确定用户池中有多少用户设置了 MFA,有多少没有设置?

标签: amazon-web-servicesamazon-cognito

解决方案


目前,没有直接的 API 来查找启用或禁用 MFA 的用户数量。您可以向 AWS Support 提出相同的请求,他们可以将需求传达给服务的开发人员。

不幸的是,您暂时必须使用 编写有故障UserMFASettingList的代码,因为这是亚马逊为此要求提供的唯一 API 标志。

由于现有 API 不能满足您的用例,如果您已CUSTOM_AUTH启用身份验证引擎,您可以在身份验证流程期间使用 Lambda 触发器手动记录相同的内容。这将意味着重新编写大量代码并更改 auth 为您的软件工作的整个流程(并将用户移植到新引擎),但它可以加快获取用户数量的要求,并且您可以拥有自己的拥有使用 AWS SNS 和 AWS Lambda 的 OTP 生成器,可以通过许多单板使其安全可靠。


推荐阅读