提问人:Danilo Arcidiacono 提问时间:10/13/2023 更新时间:10/18/2023 访问量:290
AdminGetUserResponse 的 UserMFASettingList 字段为空
UserMFASettingList field of AdminGetUserResponse is empty
问:
我需要通过 SDK 确定特定 Cognito 用户的 MFA 配置。
我目前的逻辑是基于 API,特别是 和 响应字段。AdminGetUser
userMFASettingList
preferredMfaSetting
根据 https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-cognito-identity-provider/modules/admingetuserresponse.html#usermfasettinglist,定义为userMFASettingList
为用户激活的 MFA 选项。此列表中的可能值为 SMS_MFA 和 SOFTWARE_TOKEN_MFA。
while 被标记为已弃用,不鼓励使用。mfaOptions
我测试了一个具有强制 SMS MFA 的池,但该池是空的,尽管能够完成 MFA 质询并通过 Cognito 托管 UI 成功登录。userMFASettingList
这是一个错误吗?我应该使用什么逻辑?
答:
这是一个错误吗?
好像是这样。
除非至少调用一次 AdminSetUserMFAPreference
,否则默认情况下,在 AdminGetUser
调用中,UserMFASettingList
将始终为空,即使已正确填充也是如此。MFAOptions
这在 API 级别不会返回/为空,因此 SDK 在这里没有区别。
- 创建用户
- 完成 MFA 的设置
- 请注意,控制台显示“MFA 方法:SMS”
- 调用并检查填充时是否为空
AdminGetUser
UserMFASettingList
MFAOptions
- 调用“重新断言”SMS MFA 选项
AdminSetUserMFAPreference
- 再次致电并检查两者现在是否已填充,即使您实际上没有更改任何内容
AdminGetUser
UserMFASettingList
MFAOptions
➜ ~ aws cognito-idp admin-get-user \
--region eu-west-1 \
--user-pool-id xxx \
--username user1 \
| jq .
{
"Username": "user1",
"UserAttributes": [
...
],
"UserCreateDate": "xxx",
"UserLastModifiedDate": "xxx",
"Enabled": true,
"UserStatus": "CONFIRMED",
"MFAOptions": [
{
"DeliveryMedium": "SMS",
"AttributeName": "phone_number"
}
]
}
➜ ~ aws cognito-idp admin-set-user-mfa-preference \
--user-pool-id xxx \
--username user1 \
--sms-mfa-settings Enabled=true
➜ ~ aws cognito-idp admin-get-user \
--region eu-west-1 \
--user-pool-id xxx \
--username user1 \
| jq .
{
"Username": "user1",
"UserAttributes": [
...
],
"UserCreateDate": "xxx",
"UserLastModifiedDate": "xxx",
"Enabled": true,
"UserStatus": "CONFIRMED",
"MFAOptions": [
{
"DeliveryMedium": "SMS",
"AttributeName": "phone_number"
}
],
"UserMFASettingList": [
"SMS_MFA"
]
}
我需要通过 SDK 确定特定 Cognito 用户的 MFA 配置。
我应该使用什么逻辑?
可悲的是,你不能轻易做到。
您需要 & 的组合才能确定用户的 MFA 配置。修复了上述错误(据我所知),即使第一次正确填充,也只是用户可用的 MFA 选项列表。这不是用户选择的。PreferredMfaSetting
UserMFASettingList
UserMFASettingList
Cognito API 没有返回的字段。CurrentMfaSetting
评论