前面夜莺已经配置KeyCloak OIDC SSO登陆,SSO单点登录 KeyCloak+Postgres部署及对接Grafana
,这里再打通下夜莺嵌入Grafana SSO登陆
https://flashcat.cloud/blog/nightingale-integrate-grafana/
- 夜莺和 Grafana 都接入同一个 OIDC 单点登录系统。
- 用户从夜莺登录后,可以在夜莺中访问内嵌的 Grafana。
- Grafana 发现用户未登录时跳转到 SSO,因为用户已经在 SSO 登录过,所以会自动跳转回来。
- 终端用户感知上,就像夜莺和 Grafana 共享了登录状态。
配置
- 夜莺和 Grafana 要求使用HTTPS协议
- Grafana 需要配置
allow_embedding = true,否则无法在夜莺 iframe 中嵌入。 cookie_samesite = none和cookie_secure = true
# docker-compose.yaml
services:
grafana:
image: grafana/grafana:13.0
container_name: grafana
restart: unless-stopped
ports:
- '3000:3000'
environment:
GF_SERVER_ROOT_URL: "https://grafana.sundayhk.com"
GF_AUTH_GENERIC_OAUTH_ENABLED: "true"
GF_AUTH_GENERIC_OAUTH_NAME: "SSO"
GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP: "true"
GF_AUTH_GENERIC_OAUTH_CLIENT_ID: "grafana"
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: "1hb5GNFQbExATBD6ovvqPBJxxxxxxxxxxxxxxxxxxx"
GF_AUTH_GENERIC_OAUTH_SCOPES: "openid email profile offline_access roles"
GF_AUTH_GENERIC_OAUTH_EMAIL_ATTRIBUTE_PATH: "email"
GF_AUTH_GENERIC_OAUTH_LOGIN_ATTRIBUTE_PATH: "username"
GF_AUTH_GENERIC_OAUTH_NAME_ATTRIBUTE_PATH: "full_name"
GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://sso.sundayhk.com/realms/xwx/protocol/openid-connect/auth"
GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://sso.sundayhk.com/realms/xwx/protocol/openid-connect/token"
GF_AUTH_GENERIC_OAUTH_API_URL: "https://sso.sundayhk.com/realms/xwx/protocol/openid-connect/userinfo"
GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH: "contains(resource_access.grafana.roles[*], 'admin') && 'Admin' || contains(resource_access.grafana.roles[*], 'editor') && 'Editor' || 'Viewer'"
GF_AUTH_GENERIC_OAUTH_ALLOW_ASSIGN_GRAFANA_ADMIN: "true"
GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_STRICT: "false"
# 新增配置
GF_SECURITY_ALLOW_EMBEDDING: "true" # 允许iframe嵌入
GF_SECURITY_COOKIE_SAMESITE: "none"
GF_SECURITY_COOKIE_SECURE: "true"
# GF_AUTH_ANONYMOUS_ENABLED: "true" # 允许匿名访问, 看板不需要登录就能在iframe查看
# GF_AUTH_ANONYMOUS_ORG_ROLE: "Viewer "
# GF_LOG_LEVEL: "debug
volumes:
#- grafana-storage:/var/lib/grafana
- /etc/localtime:/etc/localtime:ro
- ./grafana-data:/var/lib/grafana
夜莺-系统集成-新增 Grafana 链接使用https

夜莺使用SSO登陆后 集成中心 Grafana 使用SSO登陆会提示
sso.sundayhk.com 拒绝了我们的连接请求。
需要到KeyCloak 配置下,Grafana 再点击SSO 就可以直接登陆了

- X-Frame-Options: 清空
- Content-Security-Policy Default:
frame-src 'self'; frame-ancestors 'self' https://*.sundayhk.com; object-src 'none';
SundayHK