Grafana 10.4.1嵌入iframe实现自动登录需求及配置咨询
Grafana嵌入自有Web应用实现自动登录方案(Grafana 10.4.1企业版)
环境与需求
- 环境:Grafana 10.4.1企业版,运行于Windows 10系统
- 需求:把Grafana完整应用嵌入自有Web应用的iframe里,实现用户登录自有网站后不用再登Grafana;目前靠匿名登录临时绕过去,要换成正式的自动登录方案
当前配置文件(custom.ini)
[server] protocol = http http_addr = 127.0.0.1 http_port = 8080 domain = 127.0.0.1 enforce_domain = false [security] allow_embedding = true [auth] login_cookie_name = grafana_session disable_login = false login_maximum_inactive_lifetime_duration = login_maximum_lifetime_duration = token_rotation_interval_minutes = 10 disable_login_form = false api_key_max_seconds_to_live = -1 [auth.anonymous] enabled = true org_name = Main Org. org_role = Viewer [auth.basic] enabled = false [auth.proxy] enabled = true header_name = X-WEBAUTH-USER header_property = username auto_sign_up = true sync_ttl = 60 whitelist = headers = enable_login_token = false
正确自动登录实现方案
方案一:反向代理认证(企业版优先推荐)
你现在已经启用了auth.proxy,但配置还不完整,得按以下步骤补全:
- 调整Grafana配置
- 关闭匿名登录:把
[auth.anonymous]下的enabled = true改为enabled = false,避免匿名权限与认证用户冲突 - 配置代理白名单:在
[auth.proxy]的whitelist字段添加自有Web应用的IP或域名,比如本地测试场景填whitelist = 127.0.0.1 - 可选增强安全:将
enable_login_token = true开启,同时让代理层转发请求时携带X-Grafana-Login-Token头,提升认证安全性
- 关闭匿名登录:把
- 自有Web应用与代理层配置
- 用户登录自有网站后,所有指向Grafana的请求必须通过代理层转发
- 代理层转发请求时,需添加
X-WEBAUTH-USER请求头,值为当前登录的自有系统用户名 - 处理Cookie与跨域:确保Grafana与自有Web应用同域,或把Grafana的
domain配置为自有应用的父域名,保证会话Cookie能正常传递到iframe中的Grafana
方案二:API生成临时登录链接
如果无法部署反向代理,可采用此方案:
- 创建Grafana服务账户
- 在Grafana后台创建一个拥有管理员权限的服务账户,生成并妥善保存API密钥(密钥泄露会引发安全风险)
- 自有Web应用后端逻辑
- 用户登录自有网站后,后端调用Grafana的
POST /api/auth/login接口,使用服务账户凭证获取Grafana会话Cookie - 将该会话Cookie设置到自有Web应用的域名下(需保证Grafana与自有应用同域,或配置Cookie的
Domain属性为父域名) - 嵌入Grafana的iframe时,浏览器会自动携带该会话Cookie,实现免登录访问
- 用户登录自有网站后,后端调用Grafana的
注意事项
- 保持
security.allow_embedding = true,否则浏览器会阻止iframe嵌入 - 生产环境务必使用HTTPS协议,避免明文传输用户信息与会话Cookie
- 反向代理方案需严格控制白名单范围,防止未授权请求伪造认证头
内容的提问来源于stack exchange,提问作者Reef Goldberg
相关产品推荐
相关产品推荐

