Grafana
Grafana 支持通用 OAuth。以 Casdoor 作为 IdP,用户就能用 Casdoor 账号登录 Grafana。确认 Grafana 已安装并在运行。
第 1 步:为 Grafana 创建 Casdoor 应用
在 Casdoor 中创建应用,并添加 Grafana 的回调地址。 Grafana 默认的 OAuth 回调路径是 /login/generic_oauth,所以完整的回调地址是 https://<grafana-host>/login/generic_oauth。复制 Client ID 和 Client Secret。

第 2 步:配置 Grafana
编辑 Grafana 配置文件(例如 conf/defaults.ini 或你的自定义配置)。找到或添加 [auth.generic_oauth],设置:
[auth.generic_oauth]
name = Casdoor
icon = signin
enabled = true
allow_sign_up = true
client_id = <来自上一步的客户端ID>
client_secret = <来自上一步的客户端秘密>
auth_url = <Casdoor端点>/login/oauth/authorize
token_url = <Casdoor端点>/api/login/oauth/access_token
HTTPS
如果 Casdoor 或 Grafana 没有用 HTTPS,设置 tls_skip_verify_insecure = true。
登录后的跳转
如果登录后跳转的地址不对,在 [server] 中设置 root_url:
[server]
http_port = 3000
# 用于从浏览器访问Grafana的公开面向的域名
domain = <你的IP地址>
# 完整的公开面向的URL
root_url = %(protocol)s://%(domain)s:%(http_port)s/
相关链接:
关于角色映射
您可能希望配置role_attribute_path,通过role_attribute_path将您的用户角色映射到Grafana。
[auth.generic_oauth]
role_attribute_path = contains(roles[*].name, 'admin') && 'Admin' || contains(roles[*].name, 'editor') && 'Editor' || 'Viewer'
role_attribute_strict = true
allow_assign_grafana_admin = true
role_attribute_path 后面的 JMESPath 表达式很关键,见 Grafana 文档。
步骤3:查看是否有效
关闭Grafana并重新启动它。
前往登录页面。你应该会看到类似这样的东西:
