AWS Cognito:如何在用户登录的Access Token中添加自定义用户属性
解决AWS Cognito自定义属性加入Access Token声明的方法
方法一:通过Cognito控制台配置
- 登录Cognito用户池控制台,进入目标用户池
- 切换到App integration标签,找到你正在使用的App Client,点击Edit
- 在Attribute read and write permissions区域,找到你的自定义属性(通常以
custom:开头),确保勾选Read权限 - 下滑到ID token and access token claims区域,找到对应自定义属性,勾选将其包含在Access token中
- 保存配置后,用户重新登录生成的Access Token就会携带这些自定义属性
方法二:使用Pre Token Generation Lambda触发器
如果控制台配置无法满足动态处理需求,可以用这个方案:
- 创建Lambda函数,通过代码将自定义属性注入Access Token,示例Python代码如下:
def lambda_handler(event, context): # 获取用户池中存储的自定义属性 user_attrs = event['request']['userAttributes'] # 整理需要加入Access Token的属性 add_claims = { 'custom:your_attr_1': user_attrs.get('custom:your_attr_1'), 'custom:your_attr_2': user_attrs.get('custom:your_attr_2') } # 将属性写入Token声明 event['response']['claimsOverrideDetails'] = { 'claimsToAddOrOverride': add_claims } return event
- 回到Cognito用户池的Triggers标签,找到Pre token generation选项,选择刚创建的Lambda函数
- 保存配置,用户登录时Lambda会自动把自定义属性加入Access Token的载荷中
注意事项
- 自定义属性必须以
custom:为前缀,这是Cognito的强制规范 - 修改配置后需要用户重新登录,旧Token不会自动更新属性
- 确保自定义属性已正确存储在用户池中(控制台能显示说明存储没问题)
内容的提问来源于stack exchange,提问作者Prasad Jagtap
相关产品推荐
相关产品推荐

