KeyCloak调用/userinfo接口未返回用户信息仅返回类token字符串
问题根因
Keycloak的OIDC UserInfo端点默认遵循OIDC规范开启了响应签名配置,返回的是签名后的JWT格式用户信息,并非接口调用错误,也不是返回了新的token。你拿到的字符串本身就包含完整的用户信息,仅需做解码处理或者调整配置即可拿到明文内容。
解决方案
方案一:直接解析返回的JWT内容
无需调整Keycloak配置,直接处理返回值即可:
- 将返回的字符串按
.分割,取中间的Payload段,做Base64Url解码就能得到明文的用户信息JSON - 你提供的返回串解码后已包含
sub(用户唯一标识)、aud(客户端ID)、iss(签发地址)字段,缺少其他自定义字段和基础用户字段的原因是token申请环节的scope配置不全
方案二:调整客户端配置返回明文JSON
在Keycloak后台修改配置,让接口直接返回可读JSON:
- 进入对应realm的
Clients页面,找到你当前使用的客户端 - 切换到
Settings标签,下拉到「Access settings」模块 - 将
User info response signature algorithm选项设置为none/未签名 - 保存配置后重新获取access token调用UserInfo接口,即可直接拿到明文用户信息
额外说明
- 你当前的请求头配置完全符合要求,不需要修改
Content-Type或Authorization字段 - 若拿到的用户信息缺少期望的属性(如用户名、邮箱、手机号),请检查两项配置:
- 调用token接口时是否传入了对应scope(比如
profile、email) - 客户端的
Client scopes配置中,对应scope是否添加了用户属性的Mapper映射
- 调用token接口时是否传入了对应scope(比如
内容的提问来源于stack exchange,提问作者Michael McDermott
相关产品推荐
相关产品推荐

