跳到主要内容

单点登录

用 OIDC 接入企业身份源,IdP 组映射到管理员、运维工程师、只读三种角色。需要企业版许可。

单点登录需要企业版许可。不使用 SSO 时,账号由网关自己管理,见用户。两种方式二选一,不要同时启用。

架构

SSO 部署使用 docker-compose.sso.yml:Caddy 把请求交给 oauth2-proxy,oauth2-proxy 完成 OIDC 登录后再转给网关。SSO 栈同样自带 pgvector/pgvector:pg16,使用同一套 RST_DB_URL。Keycloak 可以联合 LDAP 或 AD。

配置

  1. 在 IdP 中注册一个 OIDC client,回调地址填 https://<地址>/oauth2/callback。
  2. 执行 deploy.sh,认证方式选 2,填写 issuer、client id 和 client secret。脚本会写好下面这些变量:
变量说明
OIDC_ISSUER_URLIdP 的 issuer 地址
OIDC_CLIENT_ID、OIDC_CLIENT_SECRET第 1 步注册的 client
OAUTH2_PROXY_REDIRECT_URLhttps://<地址>/oauth2/callback
OAUTH2_PROXY_COOKIE_SECRETopenssl rand -base64 32 生成
OAUTH2_PROXY_COOKIE_SECUREtrue
OAUTH2_PROXY_REVERSE_PROXYtrue
OAUTH2_PROXY_SKIP_OIDC_DISCOVERYfalse

角色映射

角色来自 IdP 组:

RST_RBAC_ADMIN_GROUPS=netops-admins
RST_RBAC_OPERATOR_GROUPS=netops-l1,netops-l2
RST_RBAC_VIEWER_GROUPS=auditors

一个人在多个组中时,取最高的那一档。三种角色的权限见用户。

每个 SSO 用户首次登录时同样需要同意最终用户许可协议。

compose 中的 --profile bundled-idp(Keycloak 加 OpenLDAP)只用于演示和测试,只监听 127.0.0.1,启动前必须在 .env 中设置 KEYCLOAK_ADMIN_PASSWORD。生产环境不要启用。

本页内容