AWS CDK中Cognito应用客户端ALLOW_ADMIN_USER_PASSWORD_AUTH未生效
问题分析与解决
你的问题出在两个核心点上:
- 无效的L1构造配置:你定义了
CfnUserPoolClientProps但未将其用于创建客户端实例,这段代码完全没有生效,实际起作用的是self.user_pool.add_client()的配置逻辑。 - auth_flows参数配置错误:你注释掉了
auth_flows参数,且即使启用,原代码中的user_password=True对应的是ALLOW_USER_PASSWORD_AUTH,并非你需要的ALLOW_ADMIN_USER_PASSWORD_AUTH。
正确配置方案
在add_client()方法中,通过auth_flows参数明确配置所有需要的认证流,每个选项与Cognito的认证流一一对应:
self.user_pool.add_client('cognito-app-client', user_pool_client_name='cognito-app-client', access_token_validity=Duration.minutes(60), id_token_validity=Duration.minutes(60), refresh_token_validity=Duration.days(1), auth_flows=cognito.AuthFlow( admin_user_password=True, # 对应ALLOW_ADMIN_USER_PASSWORD_AUTH custom=True, # 对应ALLOW_CUSTOM_AUTH refresh_token=True, # 对应ALLOW_REFRESH_TOKEN_AUTH user_srp=True # 对应ALLOW_USER_SRP_AUTH ), o_auth=cognito.OAuthSettings( flows=cognito.OAuthFlows( implicit_code_grant=True, ) ), prevent_user_existence_errors=True, generate_secret=True, enable_token_revocation=True)
关键对应关系说明
AuthFlow类的参数与Cognito认证流的映射:
admin_user_password=True→ 启用ALLOW_ADMIN_USER_PASSWORD_AUTHcustom=True→ 启用ALLOW_CUSTOM_AUTHrefresh_token=True→ 启用ALLOW_REFRESH_TOKEN_AUTHuser_srp=True→ 启用ALLOW_USER_SRP_AUTH
如果坚持使用L1的CfnUserPoolClient构造,需修正explicit_auth_flows的格式(每个流作为数组独立元素,而非逗号分隔的字符串),并创建实例:
cognito.CfnUserPoolClient(self, 'cognito-app-client', user_pool_id=self.user_pool.user_pool_id, explicit_auth_flows=[ "ALLOW_ADMIN_USER_PASSWORD_AUTH", "ALLOW_CUSTOM_AUTH", "ALLOW_REFRESH_TOKEN_AUTH", "ALLOW_USER_SRP_AUTH" ], # 补充其他必要配置参数 )
内容的提问来源于stack exchange,提问作者MountainBiker
相关产品推荐
相关产品推荐

