Kerberos能否对接OAuth实现OpenShift上Grafana实例的免密SSO认证
实现方案与操作步骤
你描述的认证流程完全可以实现,适配你现有Kerberos SSO、OpenShift + oauth-proxy + Grafana的架构,同时满足用户组权限管控和无感认证的需求。
核心配置步骤
- 第一步:SSO服务端配置
你司现有Kerberos对接的SSO服务端需要先开启OIDC协议支持,新增一个OIDC客户端,配置如下内容:- 客户端ID、客户端密钥,后续供oauth-proxy调用
- 重定向URI填写
https://grafana.company.com/oauth2/callback,和oauth-proxy的回调地址一致 - 开启用户组声明返回,确保LDAP里的用户组信息能在OIDC认证成功后返回给oauth-proxy
- 第二步:OpenShift上oauth-proxy配置
你现有Grafana实例绑定的oauth-proxy只需修改启动参数即可对接:- 配置OIDC提供商地址指向你司SSO Server的OIDC发现地址
- 填入上一步申请的OIDC客户端ID、客户端密钥
- 添加
--allowed-group=<允许访问的用户组名>参数,不在指定用户组的用户哪怕完成Kerberos认证也会被拦截,直接实现权限管控 - 无需额外配置Kerberos相关逻辑:只要用户在域环境内有有效Kerberos票据,重定向到SSO Server时会自动完成无感认证,不需要手动输入账号密码
- 第三步:Grafana侧适配配置
修改Grafana的环境变量开启代理认证模式:GF_AUTH_PROXY_ENABLED=true:开启代理认证,信任oauth-proxy传递的用户信息GF_AUTH_PROXY_HEADER_NAME=X-Forwarded-User:读取oauth-proxy传递的用户名头- 可选配置
GF_AUTH_PROXY_HEADERS_GROUPS=X-Forwarded-Groups:读取oauth-proxy传递的用户组信息,可在Grafana内针对不同用户组配置更细粒度的仪表盘访问权限
- 第四步:OpenShift路由校验
确保grafana.company.com对应的OpenShift路由TLS配置正常,不会拦截X-Forwarded系列请求头,避免oauth-proxy传递的用户信息丢失。
常见注意事项
- 需确保员工终端的浏览器已配置信任你司SSO域名和grafana域名,允许自动发送Kerberos票据,否则可能会弹出手动认证框
- oauth-proxy侧需配置
--oidc-groups-claim=<SSO返回用户组的声明key>,和SSO端返回的用户组字段名一致,否则用户组权限管控会失效
内容的提问来源于stack exchange,提问作者Burton
相关产品推荐
相关产品推荐

