amazon-cognito - Cognito 用户池中的 SMS MFA 状态是通过调用 setPreferredMFA 设置的还是其他的?
问题描述
使用setPreferredMFA时,即使设置了 setPreferredMFA,Cognito 用户池中的 SMS MFA 状态也会被禁用。
SMS MFA 状态代表什么,当我启用或禁用它时它会做什么?
谢谢
解决方案
这只不过是 AWS 控制台/API 响应中的不一致。示例:让我们为用户启用 SMS MFA:
aws cognito-idp set-user-mfa-preference --sms-mfa-settings Enabled=true,PreferredMfa=true --access-token <value>
是的,在控制台中,它仍然看起来好像没有启用 SMS MFA。但是这是错误的。让我们获取用户的数据:
aws cognito-idp get-user --access-token <value>
{
"Username": "your-email@example.com",
"UserAttributes": [
{
"Name": "sub",
"Value": "491a3eba-381f-4c87-a7d6-befa21e49e82"
},
{
"Name": "email_verified",
"Value": "true"
},
{
"Name": "phone_number_verified",
"Value": "true"
},
{
"Name": "phone_number",
"Value": "+1234567890"
},
{
"Name": "email",
"Value": "your-email@example.com"
}
],
"PreferredMfaSetting": "SMS_MFA",
"UserMFASettingList": [
"SMS_MFA"
]
}
您要查看的是PreferredMfaSetting
属性。它告诉您用户为自己选择的内容。
如果您现在尝试像这样进行身份验证:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --client-id <value> --auth-parameters USERNAME=<value>,PASSWORD=<value>
您将收到如下回复:
{
"ChallengeName": "SMS_MFA",
"Session": "<session-value>",
"ChallengeParameters": {
"CODE_DELIVERY_DELIVERY_MEDIUM": "SMS",
"CODE_DELIVERY_DESTINATION": "+*********7890",
"USER_ID_FOR_SRP": "your-email@example.com"
}
}
好的,那么控制台中的这个东西在做什么?它实际上已被弃用。看看MFAOptions
这里的文档:https ://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html
因此,让我们通过控制台启用 SMS MFA,然后检查以下输出GetUser
:
{
"Username": "your-email@example.com",
"UserAttributes": [
{
"Name": "sub",
"Value": "491a3eba-381f-4c87-a7d6-befa21e49e82"
},
{
"Name": "email_verified",
"Value": "true"
},
{
"Name": "phone_number_verified",
"Value": "true"
},
{
"Name": "phone_number",
"Value": "+1234567890"
},
{
"Name": "email",
"Value": "your-email@example.com"
}
],
"MFAOptions": [
{
"DeliveryMedium": "SMS",
"AttributeName": "phone_number"
}
],
"PreferredMfaSetting": "SMS_MFA",
"UserMFASettingList": [
"SMS_MFA"
]
}
差不多就是这样。
推荐阅读
- python - 将一个 3D 坐标系旋转到另一个
- python - 在 Python 中设置文件的通用路径(没有 for 循环)
- acumatica - Acumatica 和自动化通知以及如何让它们显示在机会活动选项卡中
- r - plot.nn(company_model, rep = "best") 中的错误:未计算权重
- python - 从 html 元素下载图像
- configuration - 更改 Vbox 的访客添加的名称
- go - Golang Stop Worker 但等待缓冲通道为空
- ruby-on-rails - Rails 控制台未在 Rails 6 中查询表
- python - 散景图隐藏 html 站点并仅在 Jupyter 中显示输出?
- r - 将均值、第一和第三四分位数添加到箱形图的图例中并结合 ggplot2 中的点图