Okta 挂到群晖单点登录后面:IdP 三件套先出、ACS 与 Audience 回填的五步走

痛点场景

公司身份体系在 Okta 上,存储在群晖,两边的账号各认各的门。想让员工登 Okta 时直接用群晖 SSO Server 发起的认证——也就是把群晖放在 Okta 后面当身份提供者(IdP)——这个方向官方知识库是支持的,但它的配置顺序和给 Jenkins、GitLab 配 SSO 明显不同:不是在 SSO Server 上一次建完应用,而是两边各建一半、互相交换信息

先记前置条件:

  • SSO 服务器:运行 DSM 7.2 或 DSM Enterprise 1.0(PAS)(含后续版本)的群晖存储系统;
  • SSO 客户端:Okta。

官方也注明:部分说明基于 Okta 自身文档,实际步骤可能随 Okta 界面更新有出入。

第 1 步:SSO Server 常规设置定基调

在 SSO 服务器上前往 SSO Server > 常规设置

  1. 帐户类型二选一:**Domain/LDAP/local(目录和本地用户)**允许本地用户加外部目录用户走 SSO;**Domain/LDAP(仅目录用户)**只放外部目录用户。
  2. 单击设置,输入将用作 SSO 登录页面的域名并保存。
  3. 服务器 URL 字段再次输入该域名。

第 2 步:从 SSO Server 取出 IdP 三件套

前往 SSO Server > 服务,勾选启用 SAML 服务器,然后复制三项信息,后面去 Okta 要逐项粘贴:

  • IdP 单点登录 URL
  • IdP 实体 ID
  • 证书

这一步和给其他应用配 SSO 的差别在于:此刻还不建应用程序——Okta 的回调地址要先从 Okta 那边生成,顺序不能倒。

第 3 步:在 Okta 上添加 SAML 2.0 IdP

另开标签页,用管理员帐户登录 Okta:

  1. 前往 Admin Console > Security > Identity Providers
  2. 单击 Add identity provider,选择 Add SAML 2.0 IdP
  3. 按官方口径配置九项:
选项 怎么填
名称 为群晖 SSO Server 命名此 IdP 配置文件
IdP 用户名 idpuser.subjectNameId
IdP Issuer URI 第 2 步复制的 IdP 实体 ID
IdP 单点登录 URL 第 2 步复制的 IdP 单点登录 URL
IdP 签名证书 上传第 2 步获取的证书
请求绑定 HTTP REDIRECT
请求签名 Sign SAML Authentication Requests
响应签名验证 Response
响应签名算法 SHA-1
  1. 单击 Finish 后,复制概览页面上的 Assertion Consumer Service URL(ACS URL)和 Audience URI——这两项就是回填 SSO Server 的钥匙。

九项参数里最容易被略过的是响应签名算法 SHA-1 与请求绑定 HTTP REDIRECT 这类"看起来能默认"的项;对不齐时 Okta 侧不会立刻报错,而是登录跳转后签名校验失败,排查起来绕远。

第 4 步:回 SSO Server 建应用程序

回到 SSO 服务器,前往 SSO Server > 应用程序,选择 SAML 并单击下一步,按官方口径填写:

选项 怎么填
应用程序名称 为 Okta 命名配置文件
重定向 URI 第 3 步复制的 Okta Assertion Consumer Service URL
应用程序 ID 第 3 步复制的 Okta Audience URI
Name ID 格式 Persistent
默认 Name ID 官方建议选择帐户

填完保存。至此两边的信息闭环完成:Okta 知道去哪里认证(三件套),SSO Server 也知道认证完把人送回哪里(ACS URL 与 Audience URI)。

第 5 步:验证登录链路

打开浏览器隐私窗口,前往 Okta 登录页面,选择 SSO 作为身份验证方式,群晖 SSO 页面会弹出;输入有权访问 SSO 服务的用户凭据,配置正确即登入 Okta。

验证时留个心眼:用的帐户要落在第 1 步选定的帐户类型范围内,否则会在群晖 SSO 页就被拦下,容易被误判为参数配错。

官方注意事项

官方文末提醒与其它 SSO 对接篇一致:不建议把电子邮件地址设为默认 Name ID;确需使用时,要确保邮箱在目录服务中不可修改,避免身份锚点漂移。

身份平台之间的对接,难从来不在某一格参数,而在两边信息交换的顺序。诚鑫致达科技做这类双平台单点登录联调时,都会先把"谁出什么、谁收什么"画成一张单向流动的纸再动手,五步走完一次过。