如何通过RESTful API获取Keycloak中用户的自定义属性?
获取用户自定义属性的方法
要从OpenID Connect的userinfo接口获取用户自定义属性,需在Keycloak后台完成属性映射配置,并确保请求令牌包含正确权限,具体步骤如下:
1. 配置用户属性到UserInfo的映射
- 登录Keycloak管理控制台,进入目标Realm
- 进入「客户端」页面,选择你正在使用的客户端
- 切换到「映射器」标签,点击「创建」按钮
- 映射器类型选择「用户属性」,填写以下信息:
- 名称:自定义标识(如「自定义属性映射」)
- 用户属性:后台用户配置中自定义属性的键名(例如
my_custom_attr) - Token Claim Name:返回结果中要显示的字段名(可与用户属性键名一致)
- 勾选「添加到用户信息」,按需勾选「添加到ID令牌」
- 保存配置
2. 获取包含正确Scope的Access Token
在获取Access Token时,必须包含profile或自定义关联的Scope(如果映射器指定了特定Scope),示例请求:
curl \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=password" \ -d "client_id=YOUR_CLIENT_ID" \ -d "username=foo@example.com" \ -d "password=USER_PASSWORD" \ -d "scope=openid profile" \ 'https://$URL/auth/realms/$REALM/protocol/openid-connect/token'
3. 重新调用UserInfo接口
使用新生成的Access Token执行原请求,返回的JSON数据中就会包含你配置的自定义属性字段:
curl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $NEW_ACCESS_TOKEN" \ 'https://$URL/auth/realms/$REALM/protocol/openid-connect/userinfo'
内容的提问来源于stack exchange,提问作者Bob van Luijt
相关产品推荐
相关产品推荐

