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

Grafana集成PingID OAuth SSO:仅指定组用户登录的配置问题

问题描述

已通过OAuth与PingID成功实现Grafana的SSO功能,Access Token可返回用户所属全部组信息。现需仅允许mydomain_Monitoring_Portal组员工通过SSO登录Grafana,尝试在grafana.ini中配置:

groups_attribute_path = memberOf[?contains(@, 'mydomain_Monitoring_Portal') == `true`]

但配置未生效,其他组成员仍可登录。

返回的Token数据(修正语法错误后)

{
   "scope": [],
   "client_id": "xxx-xxx-xxx-xxx-xxx",
   "firstName": "myname",
   "LastName": "lastname",
   "emailAddress": "abc@gmail.com",
   "memberOf": [
      "CN=mydomain_Monitoring_Portal,OU=xyz,OU=SecurityGroup,DC=fiat,DC=com",
      "CN=Monitoring,OU=abc,OU=Secret,DC=fiat,DC=com",
      "CN=service,OU=def,OU=mount,DC=fiat,DC=com"
   ],
   "userType": "Employee",
   "userId": "nb656",
   "username": "n656",
   "exp": 167895258
}

Scope设置:openid email profile

解决方案

方案1:Grafana侧配置组白名单

groups_attribute_path仅用于从OAuth返回数据中提取Grafana组信息,不做登录权限校验。要限制登录,需添加allowed_groups参数并关闭自动注册:

[auth.generic_oauth]
enabled = true
client_id = xxx-xxx-xxx-xxx-xxx
client_secret = your_secret
scopes = openid email profile
auth_url = https://your-pingid-auth-url/authorize
token_url = https://your-pingid-token-url/token
api_url = https://your-pingid-api-url/userinfo
# 保持组路径配置以正确识别目标组
groups_attribute_path = memberOf[?contains(@, 'mydomain_Monitoring_Portal') == `true`]
# 指定仅允许登录的组(若提取的是完整DN,需填写完整字符串)
allowed_groups = mydomain_Monitoring_Portal
# 禁止非白名单用户自动注册登录
allow_sign_up = false

方案2:PingID侧配置组过滤(更安全)

直接在PingID控制台的OAuth应用中设置访问控制,仅允许mydomain_Monitoring_Portal组用户获取Token:

  • 登录PingID管理后台,找到对应Grafana OAuth应用;
  • 在应用权限/访问控制模块添加规则,限定仅该组用户可访问;
  • 保存后,非目标组用户会被PingID直接拦截,无法进入Grafana流程。

原配置失效原因

groups_attribute_path的作用是映射用户组到Grafana内部组,用于分配平台内权限,而非控制用户是否能登录。所以即使配置了该参数,其他组用户仍可完成SSO登录,只是Grafana内不会为其分配目标组权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:08:30