跳到主内容

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。

在Casdoor中创建一个应用

第 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/

相关链接:

  1. Grafana 文档

  2. Grafana 默认的ini

关于角色映射​

您可能希望配置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并重新启动它。

前往登录页面。你应该会看到类似这样的东西:

最终结果