如何在AWS Cognito用户池中为特定用户禁用MFA
问题解答
核心结论
是的,当用户池设置为强制MFA时,控制台的用户详情界面不会显示“禁用MFA”的选项——全局强制规则会锁定用户级别的MFA配置,无法通过控制台直接修改。要为特定用户禁用MFA,必须通过AWS CLI或AWS SDK调用接口来覆盖全局设置。
具体实现方法
1. 使用AWS CLI操作
执行admin-set-user-mfa-preference命令,指定目标用户并关闭所有MFA类型,同时设置首选MFA为无:
aws cognito-idp admin-set-user-mfa-preference \ --user-pool-id <你的用户池ID> \ --username <演示账户用户名> \ --no-sms-mfa-enabled \ --no-totp-mfa-enabled \ --mfa-option "NO_MFA"
注意:执行该命令的IAM实体需要拥有
cognito-idp:AdminSetUserMFAPreference权限。
2. 使用AWS SDK操作(以Python为例)
通过Boto3调用对应接口,直接修改用户的MFA偏好:
import boto3 cognito_client = boto3.client('cognito-idp') # 修改用户MFA偏好 cognito_client.admin_set_user_mfa_preference( UserPoolId='<你的用户池ID>', Username='<演示账户用户名>', SMSMfaSettings={ 'Enabled': False, 'PreferredMfa': False }, SoftwareTokenMfaSettings={ 'Enabled': False, 'PreferredMfa': False } )
验证设置生效
执行以下命令查看用户的MFA配置,确认UserMFASettingList字段为["NO_MFA"]:
aws cognito-idp admin-get-user --user-pool-id <你的用户池ID> --username <演示账户用户名>
内容的提问来源于stack exchange,提问作者Möoz
相关产品推荐
相关产品推荐

