如何将WSO2 IS的用户角色同步到配置为服务提供商的Grafana
Grafana对接WSO2 IS角色同步配置指导
1 WSO2 IS侧配置校验与调整
- 进入WSO2 IS管理控制台,打开你对接Grafana所用的服务提供商(SP)配置页
- 在声明配置模块,添加角色映射声明:选择
http://wso2.org/claims/roles作为源属性,自定义返回声明名(建议用groups或Roles),勾选随ID Token返回、随UserInfo端点返回两个选项 - 若使用OIDC协议对接,在SP的Scope配置中添加
groupsscope,允许Grafana请求角色字段;若使用SAML协议对接,在断言配置中开启角色属性的断言输出,属性名和之前自定义的返回声明名保持一致 - 可选配置:如果不需要WSO2 IS默认的角色域前缀(如
Internal/、Primary/),可在声明配置中开启移除域前缀开关
2 Grafana侧对应配置修改
根据你使用的对接协议,修改Grafana配置文件grafana.ini对应区块:
2.1 OIDC(Generic OAuth)对接场景
找到[auth.generic_oauth]配置块,添加/更新如下参数:
# 确保请求权限包含groups scope scopes = openid email profile groups # 角色匹配规则,JMESPath表达式,groups对应WSO2返回的角色字段名 role_attribute_path = contains(groups[*], 'grafana_admin') && 'Admin' || contains(groups[*], 'grafana_editor') && 'Editor' || 'Viewer' # 允许给匹配到的用户分配Grafana管理员权限 allow_assign_grafana_admin = true # 若需要按角色映射到不同Grafana组织,可额外配置org_mapping # org_mapping = {"wso2_grafana_org1": {"org_id": 1, "org_role": "Editor"}, "wso2_grafana_org2": {"org_id": 2, "org_role": "Viewer"}}
如果WSO2 IS侧返回的角色字段名是Roles,则将表达式中的groups替换为Roles即可。
2.2 SAML对接场景
找到[auth.saml]配置块,添加/更新如下参数:
# 和WSO2 IS侧返回的角色属性名完全一致 role_attribute = Roles # 未匹配到角色时默认分配的角色 auto_assign_org_role = Viewer
3 故障排查
- 开启Grafana debug日志:在
grafana.ini中设置log.level = debug,重启Grafana后发起一次登录 - 查看Grafana日志中OIDC/SAML模块的返回报文,确认WSO2 IS已经将角色字段正常返回给Grafana
- 若返回报文中存在角色字段但角色不匹配,调整
role_attribute_path的JMESPath表达式,和返回的字段结构、角色名完全对齐即可
内容的提问来源于stack exchange,提问作者appasaheb satwar
相关产品推荐
相关产品推荐

