配置 ONLYOFFICE SP 和 Shibboleth IdP
介绍
单点登录 (SSO) 是一种技术,允许用户只需登录一次即可访问多个应用程序/服务,而无需重新验证身份。
SSO 始终由两个应用程序的联合操作来保证:身份提供者和服务提供者(以下简称“IdP”和“SP”)。ONLYOFFICE SSO 仅实现 SP。许多不同的提供者可以充当 IdP,但本文考虑的是 Shibboleth 实现。
为 SSO 设置准备 ONLYOFFICE 协作空间
- 安装支持 SSO 的 Docker 版或任何更高版本的 ONLYOFFICE 协作空间 v. 11.0.0。
- 添加一个域名,例如,myportal-address.com。
- 在您的门户网站上,进入 控制面板 -> HTTPS,创建并应用 letsencrypt 证书以加密流量(以启用门户网站上的 HTTPS)。
创建 Shibboleth IdP
要求
- 要部署 Shibboleth IDP,需要一台干净的 CentOS 7 主机。
- 时间必须设置正确,并且必须在主机上安装时间同步服务以用于 IDP:
timedatectl status yum install ntp systemctl enable ntpd.service ntpdate time.apple.com - 机器上必须安装
unzip包:yum install unzip - 机器上必须安装 Docker 和 Docker Compose。
- 必须将一个域名与机器关联(例如,your-idp-domain.com)
创建 Shibboleth IdP
要创建、配置和启动 Shibboleth IDP,请下载并执行 install.sh 脚本。
脚本执行以下操作:
- 从 github 下载用于创建 Shibboleth Idp 镜像和容器的 docker 文件,
- 在配置文件中将默认的 idptestbed.edu 域更改为执行脚本时指定的域,
- 为指定的 ONLYOFFICE SP 域添加通过 SAML 协议的访问,
- 指定 ONLYOFFICE SP 需要哪些属性才能从 Shibboleth IDP 发布用户信息(属性映射设置),
- 创建和配置 LDAP 并创建用户以进行发布,
- 启用从 ONLYOFFICE SP 到 Shibboleth IDP 的元数据动态加载,
- 如有必要,启用 Shibboleth SLO。
- 下载 install.sh 脚本:
curl -L https://help.onlyoffice.co/Products/Files/HttpHandlers/filehandler.ashx?action=download&fileid=6875651&doc=MW9QWHdCQU9HOTN5dlpBWVQxTGtOem55SjJaNWx4L1ZIdTNkQk53QnpDYz0_IjY4NzU2NTEi0 -o install.sh - 使脚本可执行:
chmod +x install.sh - 执行脚本并用您自己的参数替换:
./install.sh -id your-idp-domain.com -sd myportal-address.com --no_slo脚本参数:
- -id - 当前机器的 Shibboleth IDP 域名。
- -sd - 部署 ONLYOFFICE SP 的域名。
- --no_slo - 禁用 Shibboleth IDP 中的单点注销(可选参数)。
- 等待脚本执行后 Shibboleth IDP 启动。
- 要验证 Shibboleth IDP 是否正确启动,请在浏览器中打开 https://your-idp-domain.com/idp/shibboleth 链接。应显示一个 xml 文件。
- 复制 https://{your_idp_domain}/idp/shibboleth 链接(例如,https://your-idp-domain.com/idp/shibboleth)并以管理员身份登录到 ONLYOFFICE 门户。打开 控制面板 -> SSO 页面。
配置 ONLYOFFICE SP
- 确保您以管理员身份登录到您的 ONLYOFFICE 控制面板,然后在左侧边栏的 门户设置 部分中单击 SSO 选项卡。
您只能为您的组织在 ONLYOFFICE 门户上注册一个企业身份提供者。


- 使用 启用单点登录身份验证 开关启用 SSO,并将 Shibboleth IdP 的链接粘贴到 Idp 元数据 XML 的 URL 字段中。


- 按上箭头按钮加载 IdP 元数据。ONLYOFFICE SP 设置表单将自动填充您从 Shibboleth IdP 获取的数据。
由于我们在执行 install.sh 脚本时通过指定
--no_slo参数禁用了 SLO,因此 IdP 单点注销端点 URL 字段将为空。 - 一旦 IdP 元数据加载完成,IdP 公共证书部分将添加两个证书。您还会看到弹出窗口显示以下文本:“不支持多个 Idp 验证证书。请仅保留主证书”。
您需要删除列表中的第二个证书,只保留第一个证书,即主证书。使用第二个证书旁边的删除链接将其删除。如果不删除证书,您将无法保存设置。
- 在自定义登录按钮标题字段中,您可以输入任何文本替代默认文本(单点登录)。此文本将显示在用于通过 ONLYOFFICE 身份验证页面上的单点登录服务登录门户的按钮上。


- 现在您需要在SP 证书部分创建自签名证书或添加任何其他证书。
重要!在用途列表中,选择签名和加密选项,因为您的 Shibboleth IdP 已通过 install.sh 脚本自动配置为验证数据是否已数字签名和加密。


您应该得到类似的结果:


- 在属性映射部分,设置 ONLYOFFICE 人员模块中的字段与 Shibboleth IdP 返回的用户属性的对应关系。
名字 urn:oid:2.5.4.42 姓氏 urn:oid:2.5.4.4 邮箱 urn:oid:0.9.2342.19200300.100.1.3 位置 urn:oid:2.5.4.7 职位 urn:oid:2.5.4.12 电话 urn:oid:0.9.2342.19200300.100.1.41 

在高级设置部分,您可以勾选隐藏身份验证页面选项,以隐藏默认身份验证页面并自动重定向到 SSO 服务。
重要如果您需要恢复默认身份验证页面(以便在 IDP 服务器出现故障时能够访问门户),您可以在浏览器地址栏中在您的门户域名后添加/Auth.aspx?skipssoredirect=true键。 - 点击保存按钮。
- 应打开ONLYOFFICE SP 元数据部分。
- 通过点击下载 SP 元数据 XML按钮来验证我们的设置是否公开可用。应显示 XML 文件内容。


此 xml 文件通常用于配置 Shibboleth IDP,但由于 install.sh 脚本启用了
DynamicHTTPMetadataProvider,我们不需要这样做(Shibboleth IDP 在首次请求登录时将下载此 xml 文件)。
检查 ONLYOFFICE SP 与 Shibboleth IdP 的工作
install.sh 脚本创建了 4 个用户,可以用于测试 ONLYOFFICE SP 与 Shibboleth IdP 的工作。
| 邮箱 | 用户名 | 密码 | 备注 |
|---|---|---|---|
| student1@{your_idp_domain} | student1 | password | 标准 |
| student2@{your_idp_domain} | student2 | password | 无给定名 |
| student3@{your_idp_domain} | student3 | password | 含变音符号 |
| staff1@{your_idp_domain} | staff1 | password | 仅必填字段 |
在 SP 端登录 ONLYOFFICE
- 访问 ONLYOFFICE 身份验证页面(例如,https://myportal-address.com/Auth.aspx)。
- 点击单点登录按钮(如果您在配置 ONLYOFFICE SP 时指定了自己的文本,标题可能会有所不同)。如果按钮缺失,这意味着 SSO 未启用。


- 如果所有 SP 和 IdP 参数设置正确,我们将被重定向到 Shibboleth IdP 登录表单:


- 输入 Shibboleth IdP 帐户的用户名和密码(用户名:student1,密码:password)并勾选不记住登录框。
- 如果凭据正确,将打开一个新窗口。点击接受按钮以允许向服务提供信息。


- 如果一切正确,我们将被重定向到门户的主页(如果缺少用户将自动创建,或者如果在 IDP 中更改了数据将更新)。


使用 SSO 身份验证添加的用户的个人资料
使用 SSO 身份验证创建的用户个人资料的编辑权限受到限制。从 IdP 接收到的用户资料字段无法编辑(即,名字、姓氏、邮箱、职位和位置)。您只能从您的 IdP 帐户编辑这些字段。
下图显示了 SSO 用户的操作菜单:


下图显示了打开编辑的 SSO 用户个人资料:


使用 SSO 身份验证创建的用户在门户管理员的用户列表中标记有 SSO 图标:


要从 Shibboleth IdP 注销(如果您在登录时未勾选不记住登录框),请访问如下链接:https://{shibboleth-idp-domain}/idp/profile/Logout