群晖 SSO Server 换 OIDC 协议:Well-known URL 加应用密钥的填法与验证
痛点场景
两台群晖要做单点登录,翻官方文档会看到两条并行路线:SAML 配置指南和 OIDC 配置指南。SAML 一路要复制实体 ID、单点登录 URL、证书三件套,或者导出元数据 XML;如果客户端生态更认 OIDC(OpenID Connect),SSO Server 同样原生支持——而且客户端也是群晖自己的 DSM 时,官方流程同样只有四节。
前置条件与 SAML 一路完全一致:
- SSO 服务器:运行 DSM 7.2 或 DSM Enterprise 1.0(PAS)(含后续版本)的群晖存储系统;
- SSO 客户端:同样运行 DSM 7.2 或 DSM Enterprise 1.0(含后续版本)的群晖存储系统。
两条路线选一条即可,不必都配。
第 1 步:SSO Server 常规设置
在 SSO 服务器上前往 SSO Server > 常规设置:
- 选择帐户类型:**Domain/LDAP/local(目录和本地用户)**允许本地用户和外部目录用户通过 SSO 访问应用程序;**Domain/LDAP(仅目录用户)**只允许外部目录用户。
- 单击设置,输入将用作 SSO 登录页面的域名并保存。
- 在服务器 URL 字段再次输入该域名。
这一节两协议共用,帐户类型的口径同样要在客户端侧保持一致。
第 2 步:启用 OIDC 服务器并建应用程序
- 前往 SSO Server > 服务,选择启用 OIDC 服务器并保存设置,然后复制 Well-known URL——这是 OIDC 一路最核心的一条信息。
- 切换到应用程序页面,单击添加,选择 OIDC,单击下一步。
- 填写两项:
- 应用程序名称;
- Redirect URI:SSO 客户端的 URL,服务器确认身份验证请求后用户将被重定向到此地址。
- 确认设置并单击完成,OIDC 应用程序配置文件即加入 SSO Server。
- 选择该应用程序配置文件并单击编辑,复制两项信息:
- Application ID
- Application secret
与 SAML 一路对比,OIDC 要抄的东西此消彼长:没有证书、没有实体 ID,取而代之的是 Well-known URL 加一组应用凭据(ID 加密钥)。第 5 小步的"建完再进编辑页取密钥"容易漏——Application secret 不在创建向导里直接展示,得回到编辑界面复制。
第 3 步:在客户端 DSM 配置 SSO 客户端
打开单独的浏览器标签页,在客户端群晖上前往控制面板 > 域/LDAP(或 Identity Connect)> SSO 客户端:
- 勾选启用 OIDC SSO 服务。
- 单击 OIDC SSO 设置,从配置文件下拉菜单选择 OIDC。
- 按官方口径填写:
| 选项 | 怎么填 |
|---|---|
| 帐户类型 | 与第 1 步所选相同 |
| 名称 | 自定义配置文件名称,显示在 SSO 登录界面上 |
| Well-known URL | 第 2 步复制的 Well-known URL |
| Application ID | 第 2 步复制的 Application ID |
| Application secret | 第 2 步复制的 Application secret |
| Redirect URI | 客户端的 URL,与第 2 步登记的一致 |
| Authorization scope | 输入 openid |
| Username claim | 输入 username |
- 单击应用保存。
最后两项是官方给定的固定值,不是随环境自定义的名称:scope 必须是 openid(这是 OIDC 协议要求携带的基本身份范围),Username claim 必须是 username(群晖侧按用户名字段映射身份)。凭直觉改成别的字符串,登录就会停在令牌校验环节。
第 4 步:验证 OIDC SSO
打开一个浏览器隐私窗口,前往登录页面并选择 SSO 作为身份验证方式,群晖 SSO 页面弹出后,输入有权访问 SSO 服务的用户凭据——OIDC 配置正确的话将成功登录。
验证失败时先查三处:Well-known URL 是否与服务器侧完全一致、Application secret 是否复制完整、Redirect URI 两边是否逐字相同。OIDC 的报错通常落在令牌交换环节,这三处占了绝大多数。
SAML 与 OIDC 两条路线怎么选
把官方两篇流程并排看,差异集中在三处:
- 要抄的信息不同:SAML 抄实体 ID、单点登录 URL、证书(或整份元数据 XML);OIDC 抄 Well-known URL 加 Application ID、secret。
- 客户端侧入口并列:SSO 客户端里"启用 SAML SSO 服务"与"启用 OIDC SSO 服务"是两个并排的开关,各配各的设置页。
- 无邮箱锚点顾虑的差别:SAML 一路官方专门提醒默认 Name ID 慎用邮箱;OIDC 一路靠 username claim 映射身份,官方直接固定为
username,绕开了这个坑。
设备间全是群晖且要稳定省心,两条路都通;客户端里混了第三方应用、且那边只认其中一种协议时,就按客户端生态定协议。
统一身份这条线,协议只是形式,把"谁发凭据、谁认凭据"的边界定清楚才是根本。诚鑫致达科技规划存储登录体系时,SSO 协议选型只占十分钟,帐户类型与帐户生命周期怎么管才是花时间对齐的部分。