Image

Authentik 集成Kubernetes Grafana 实现SSO单点登录

释放双眼,带上耳机,听听看~!

Authentik原生支持Grafana的单点登录,也可以批量划分权限。我这里Grafana是使用Kubernetes 部署的,详细修改配置和Docker部署相同,需要注意的地方我会整理出来

Grafana

Grafana 是一款多平台开源分析和交互式可视化 Web 应用程序。连接到支持的数据源后,它能够提供 Web 图表、图形和警报。此外,Grafana Enterprise 版本还提供了更多功能。它可通过插件系统进行扩展。

Authentik

authentik 是一个 IdP(身份提供者)和 SSO(单点登录)平台,其每段代码、每个功能都以安全性为首要考虑,并强调灵活性和多功能性。

Authentik部署文档可参考下面的文档

Image
Image

Kubernetes v1.29.9部署Authentik 统一认证平台并接入Harbor

Authentik 创建应用程序

登录Authentik 后台,选择Application 创建应用程序

Authentik 集成Kubernetes Grafana 实现SSO单点登录

应用程序名称我这里设置为Grafana

Authentik 集成Kubernetes Grafana 实现SSO单点登录

可以配置一个启动URL,也可以不配置,这里可选

Authentik 集成Kubernetes Grafana 实现SSO单点登录

Authentik 创建提供程序

创建提供程序

Authentik 集成Kubernetes Grafana 实现SSO单点登录

认证方式选择 OAuth2/OpenID

Authentik 集成Kubernetes Grafana 实现SSO单点登录

这里创建一个名称,后续为应用程序绑定

Authentik 集成Kubernetes Grafana 实现SSO单点登录

重定向地址需要写Grafana的地址

Authentik 集成Kubernetes Grafana 实现SSO单点登录

创建好暂时是无法使用的,需要关联Grafana应用程序
Authentik 集成Kubernetes Grafana 实现SSO单点登录

到Grafana应用程序中,选择绑定
Authentik 集成Kubernetes Grafana 实现SSO单点登录

Authentik 集成Kubernetes Grafana 实现SSO单点登录

到提供程序中,记录以下配置

这里字段映射我已经截图相关配置,需要记住保留,将字段配置到Grafana

Authentik 集成Kubernetes Grafana 实现SSO单点登录
Authentik 集成Kubernetes Grafana 实现SSO单点登录
Authentik 集成Kubernetes Grafana 实现SSO单点登录

Grafana 配置文件调整

Grafana Kubernetes可以参考下面的文档,我这里配置文件采用k8s configmap创建,自行参考

Image
Image

Kubernetes v1.29.9安装Grafana 12并开启匿名访问

  • Grafana.ini 配置文件修改 (演示)
[auth]
signout_redirect_url = https://authentik.company/application/o/<application_slug>/end-session/
# Optionally enable auto-login
oauth_auto_login = true

[auth.generic_oauth]
name = authentik
enabled = true
client_id = <Client ID from above>
client_secret = <Client Secret from above>
scopes = openid email profile
auth_url = https://authentik.company/application/o/authorize/
token_url = https://authentik.company/application/o/token/
api_url = https://authentik.company/application/o/userinfo/
# Optionally map user groups to Grafana roles
role_attribute_path = contains(groups, 'Grafana Admins') && 'Admin' || contains(groups, 'Grafana Editors') && 'Editor' || 'Viewer'
  • 如果是使用Docker安装的,只需要在下面添加环境变量信息即可
environment:
    GF_AUTH_GENERIC_OAUTH_ENABLED: "true"
    GF_AUTH_GENERIC_OAUTH_NAME: "authentik"
    GF_AUTH_GENERIC_OAUTH_CLIENT_ID: "<Client ID from above>"
    GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: "<Client Secret from above>"
    GF_AUTH_GENERIC_OAUTH_SCOPES: "openid profile email"
    GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://authentik.company/application/o/authorize/"
    GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://authentik.company/application/o/token/"
    GF_AUTH_GENERIC_OAUTH_API_URL: "https://authentik.company/application/o/userinfo/"
    GF_AUTH_SIGNOUT_REDIRECT_URL: "https://authentik.company/application/o/<application_slug>/end-session/"
    # Optionally enable auto-login (bypasses Grafana login screen)
    GF_AUTH_OAUTH_AUTO_LOGIN: "true"
    # Optionally map user groups to Grafana roles
    GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH: "contains(groups[*], 'Grafana Admins') && 'Admin' || contains(groups[*], 'Grafana Editors') && 'Editor' || 'Viewer'"
    # Required if Grafana is running behind a reverse proxy
    GF_SERVER_ROOT_URL: "https://grafana.company"

我这里演示下我如何修改的

  • Authentik 地址为https://sso.frps.cn
  • Grafana 地址为https://grafana.frps.cn
  • 获取client_id (在提供程序中查看)
  • 获取client_secret (在提供程序中查看)
  • signout_redirect_url (在提供程序中查看)
  • auth_url (在提供程序中查看)
  • token_url (在提供程序中查看)
  • api_url (在提供程序中查看)

完整配置文件如下展示grafana.ini

[auth]
signout_redirect_url = https://sso.frps.cn/application/o/grafana/end-session/
# Optionally enable auto-login
oauth_auto_login = true

[auth.generic_oauth]
name = authentik
enabled = true
client_id = **********
client_secret = ******
scopes = openid email profile
auth_url = https://sso.frps.cn/application/o/authorize/
token_url = https://sso.frps.cn/application/o/token/
api_url = https://sso.frps.cn/application/o/userinfo/
# Optionally map user groups to Grafana roles
role_attribute_path = contains(groups, 'authentik Admins') && 'Admin' ||  'Viewer'

role_attribute_path = contains(groups, 'authentik Admins') && 'Admin' || 'Viewer'
这里角色授权我直接绑定Authentik admin用户组为Admin权限

我这里使用Kubesphere 直接手动修改ConfigMap

Authentik 集成Kubernetes Grafana 实现SSO单点登录

Authentik 集成Kubernetes Grafana 实现SSO单点登录

除了以上配置,还需要检查root_url字段,是否可以和我们对外访问配置的一致,如不一致会出现The request fails due to a missing, invalid, or mismatching redirection URI (redirect_uri).报错

Authentik 集成Kubernetes Grafana 实现SSO单点登录

编辑Grafana.ini,和我们刚刚加配置在一个文件中


#这里我的配置,默认这里是被注释掉的
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
root_url = https://grafana.frps.cn

配置完毕后需重启Pod

我直接重载,如果是Docker或者其它方式直接重启服务即可

Authentik 集成Kubernetes Grafana 实现SSO单点登录

接下来登录访问
Authentik 集成Kubernetes Grafana 实现SSO单点登录

此时登录Grafana就已经关联到我们Authentik用户,并且权限为Admin

Authentik 集成Kubernetes Grafana 实现SSO单点登录

给TA打赏
共{{data.count}}人
人已打赏
AuthentikDell R730

Authentik 集成接入VMware vCenter 8.0.3实现ldP身份提供商登录

2025-10-15 16:43:55

AuthentikDell R730群晖

Authentik 集成群晖Synology DSM 实现单点登录

2025-10-17 16:20:27

0 条回复 A文章作者 M管理员
Image
Image
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
NEW
特斯拉V100 智能助理×
本机器助手只回答博客已有内容!