AWS Cognito注册时写入必填属性提示未授权如何解决?
问题根源
你遇到的错误来自两个关键问题:
- 属性名称不匹配:用户池要求的必填属性是
given_name和family_name,但代码里传入的是first_name和last_name——这是Cognito中完全不同的属性字段(前者是标准OIDC规范属性,后者属于自定义/旧版命名)。 - 客户端写入权限未开放:即便属性名称正确,若应用客户端未被授权写入
given_name和family_name,也会触发未授权错误。
修复步骤
1. 修正代码中的属性名称
将代码里的属性名替换为用户池要求的given_name和family_name,同时注意signUp方法的参数格式(属性需放在同一个数组中):
const firstNameAttribute = new CognitoUserAttribute({ Name: 'given_name', Value: firstName }); const lastNameAttribute = new CognitoUserAttribute({ Name: 'family_name', Value: lastName }); cognitoUserPool.signUp(username, password, [firstNameAttribute, lastNameAttribute], null, callback);
2. 配置应用客户端的属性写入权限
登录AWS控制台,进入目标Cognito用户池:
- 切换到应用客户端页面,选择你正在使用的客户端
- 找到允许的属性区域,勾选
given_name和family_name的**可写入(Writable)**权限 - 保存配置后重新测试注册流程
验证
完成上述修改后重新调用注册接口:
- 若配置正确,用户将能正常完成注册,且
given_name和family_name会被正确写入用户属性 - 若仍报错,需再次确认用户池的必填属性规则,以及应用客户端的权限配置是否生效
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

