单点登录
用 OIDC 接入企业身份源,IdP 组映射到管理员、运维工程师、只读三种角色。需要企业版许可。
单点登录需要企业版许可。不使用 SSO 时,账号由网关自己管理,见用户。两种方式二选一,不要同时启用。
架构
SSO 部署使用 docker-compose.sso.yml:Caddy 把请求交给 oauth2-proxy,oauth2-proxy 完成 OIDC 登录后再转给网关。SSO 栈同样自带 pgvector/pgvector:pg16,使用同一套 RST_DB_URL。Keycloak 可以联合 LDAP 或 AD。
配置
- 在 IdP 中注册一个 OIDC client,回调地址填
https://<地址>/oauth2/callback。 - 执行
deploy.sh,认证方式选 2,填写 issuer、client id 和 client secret。脚本会写好下面这些变量:
| 变量 | 说明 |
|---|---|
OIDC_ISSUER_URL | IdP 的 issuer 地址 |
OIDC_CLIENT_ID、OIDC_CLIENT_SECRET | 第 1 步注册的 client |
OAUTH2_PROXY_REDIRECT_URL | https://<地址>/oauth2/callback |
OAUTH2_PROXY_COOKIE_SECRET | openssl rand -base64 32 生成 |
OAUTH2_PROXY_COOKIE_SECURE | true |
OAUTH2_PROXY_REVERSE_PROXY | true |
OAUTH2_PROXY_SKIP_OIDC_DISCOVERY | false |
角色映射
角色来自 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。生产环境不要启用。