Jenkins 登录接进群晖 SSO Server:装一个插件填四个参数,CI/CD 账号跟着 NAS 走
痛点场景
公司里 Jenkins 跑着自动构建,账号却在 Jenkins 自己的用户库里单独维护:入职要开一次号,离职容易漏删,密码策略也和 NAS、域账号对不上。既然群晖存储系统上已经装了 SSO Server,能不能让 Jenkins 的登录也走这一套?
官方知识库给了现成答案:SSO Server 通过 SAML 协议对外提供单点登录,Jenkins 作为服务提供者(SP)接入后,团队成员用同一组凭据就能登录多个应用程序。整条链路在 Jenkins 侧的工作量很小——一个插件、一个安全页、四个参数。
先说清官方标注的前置条件:
- SSO 服务器:运行 DSM 7.2 或 DSM Enterprise 1.0(PAS)及更高版本的群晖存储系统;
- SSO 客户端:Jenkins。
另外官方提醒,部分说明基于 Jenkins 自身文档,实际界面随版本可能略有出入。
第 1 步:在 SSO Server 上完成常规设置
在作为 SSO 服务器的那台群晖上打开 SSO Server,进入常规设置:
- 从下拉菜单选择帐户类型,两种口径的区别在于谁能通过 SSO 登录:
- Domain/LDAP/local(或"目录和本地用户"):本地用户和外部目录用户都可以;
- Domain/LDAP(或"仅目录用户"):只允许外部目录用户。
- 单击设置,输入一个将用作 SSO 登录页面的域名,保存。
- 在服务器 URL 字段中再次输入该域名。
这里的核心是把"SSO 登录页挂哪个域名"定下来,后面 Jenkins 侧的跳转都认这个地址。
第 2 步:把 SSO Server 配置为身份提供者(IdP)
- 前往 SSO Server > 服务,勾选启用 SAML 服务器,并复制元数据(Metadata)——这是稍后要粘贴进 Jenkins 的整段信息。
- 切换到应用程序页面,选择 SAML 并单击下一步。
- 填写应用程序配置并保存,官方口径如下:
| 选项 | 怎么填 |
|---|---|
| 应用程序名称 | 为 Jenkins 命名这个配置文件 |
| 重定向 URI | Jenkins 域名后附加 /securityRealm/finishLogin,官方示例:https://myjenkins.com/securityRealm/finishLogin |
| 应用程序 ID | 与重定向 URI 相同的 URL |
| Name ID 格式 | 选择 Persistent |
| 默认 Name ID | 定义在 Jenkins 中识别用户的默认值,官方建议选 Account |
| 属性(可选) | 单击 Add Field 添加:名称 email,值选"电子邮件" |
重定向 URI 是本篇最容易填错的一项:它不是 Jenkins 首页地址,而是登录回调地址,/securityRealm/finishLogin 这段路径一个字符都不能差。
第 3 步:把 Jenkins 配置为服务提供者(SP)
另开一个浏览器标签页,用管理员帐户登录 Jenkins:
- 前往 Manage Jenkins > Manage Plugins,在搜索栏输入 SAML,选择 SAML Plugin,单击 Download now and install after restart。
- 切换到 Security 页面,按下表配置后单击 Save:
| 选项 | 怎么填 |
|---|---|
| 安全域 | SAML 2.0 |
| IdP 元数据 | 粘贴第 2 步复制的 Metadata |
| 用户名属性 | username |
| 电子邮件属性 | email |
注意用户名属性与电子邮件属性的取值,要和第 2 步里默认 Name ID 选 Account、属性里配的 email 对得上,名字对不上就会出现"登录成功但识别不出是谁"的错位。
第 4 步:验证单点登录是否生效
打开一个浏览器隐私窗口,前往 Jenkins 登录页面,选择 SSO 作为验证方式——此时应弹出群晖 SSO 登录页。输入一个有权访问 SSO 服务的用户凭据,配置正确的话会直接登进 Jenkins。
建议专门用一个普通帐户(而非管理员帐户)做这次验证,顺便确认该帐户在 SSO 帐户类型口径内——如果服务器端选的是"仅目录用户",拿纯本地帐户去试是登不进去的。
官方注意事项:默认 Name ID 慎用邮箱
官方在文末单独提醒:为确保信息安全,不建议将电子邮件地址设置为默认 Name ID。如果确实要用邮箱,须确保这些地址在目录服务中不可修改——邮箱一改,SSO 侧识别用户的锚点就变了,历史绑定关系会跟着乱。
集成化登录这件事,收益往往在三个月后才显出来:新员工开号一次、离职封号一次,各平台不再各管一摊。诚鑫致达科技给客户做 CI/CD 环境规划时,都会把 Jenkins 这类内部系统的登录先并进 NAS 的 SSO,再谈流水线本身。