You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak集成Grafana后无法登录,返回invalid_grant授权码错误如何解决?

异常根因

你遇到的报错由两层问题叠加导致:

  1. 底层错误是Keycloak生成OAuth令牌时无法解析角色字段,抛出cannot map type for token claim异常,导致Grafana第一次用授权码换令牌的请求未正常返回结果
  2. Grafana触发自动重试,用同一个已经失效的授权码再次向Keycloak请求令牌,Keycloak识别到授权码已被使用,直接返回invalid_grant: Code not valid错误

遗漏的配置项

核心是Keycloak侧未完成Grafana客户端的角色映射配置,和你Grafana.ini里的role_attribute_path规则不匹配:

  • Keycloak的grafana客户端未开启角色字段返回开关,导致ID令牌、访问令牌、用户信息接口中没有resource_access.grafana.roles字段,令牌生成时字段解析失败
  • 未将创建好的Grafana客户端角色(Admin/Editor/Viewer)分配给对应用户,角色字段为空也会触发映射异常

修复步骤

1. 调整Keycloak客户端配置

  • 进入对应mcs realm,找到grafana客户端,切换到「客户端作用域」标签
  • 将roles作用域添加到已分配作用域列表,进入roles作用域配置页,开启添加到ID令牌、添加到访问令牌、添加到用户信息三个开关
  • 切换到grafana客户端的「角色」标签,创建Admin、Editor、Viewer三个客户端角色,再进入对应用户的「角色映射」页,分配对应的Grafana客户端角色

2. 可选优化Grafana配置

如果使用的是低于8.0版本的Grafana,可将role_attribute_path调整为如下写法,避免数组通配符解析异常:

role_attribute_path = contains(resource_access.grafana.roles, 'Admin') && 'Admin' || contains(resource_access.grafana.roles, 'Editor') && 'Editor' || 'Viewer'

3. 验证修复

清除浏览器缓存、删除Keycloak中已存在的用户会话,重启Grafana后重新发起登录即可。


内容的提问来源于stack exchange,提问作者Kambei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:45:04