配置 ONLYOFFICE SP 和 AD FS IdP
简介
单点登录 (SSO) 是一种技术,允许用户只需登录一次即可访问多个应用程序/服务,而无需重新认证。
SSO 总是通过两个应用程序的联合操作来实现:身份提供者和服务提供者(以下简称“IdP”和“SP”)。ONLYOFFICE SSO 实现了仅 SP。许多不同的提供者可以作为 IdP,但本文考虑的是 Active Directory Federation Services (AD FS) 的实现。
系统要求
系统要求包括以下软件,这些软件已被测试并证明与 ONLYOFFICE SSO 能够正常工作:
- Windows Server 2008 R2, Windows Server 2016;
- AD FS 版本 3.0 或更高。
为 SSO 设置准备 ONLYOFFICE Workspace
- 安装支持 SSO 的 Docker 版或任何更高版本的 ONLYOFFICE Workspace(AD FS 从社区服务器 v9.5 开始支持)。
- 添加一个域名,例如 myportal-address.com。
- 在您的门户网站上,进入 控制面板 -> HTTPS,创建并应用 letsencrypt 证书以加密流量(以在您的门户网站上启用 HTTPS)。
为 SSO 设置准备 AD FS
- 安装最新的 AD DS (Active Directory Domain Service) 版本,并应用所有官方更新和补丁。
- 安装最新的 AD FS 版本,并应用所有官方更新和补丁。
要从头部署 AD FS,您可以使用以下说明。
- 验证 AD FS 元数据链接是否公开可用。为此,
- 在 服务器管理器 中,打开 工具 -> AD FS 管理,
- 转到 AD FS \ 服务 \ 端点,
- 在表中找到类型为 联合元数据 的行。IdP 元数据的链接按照以下方案构建:
https://{ad-fs-domain}/{path-to-FederationMetadata.xml}

或者,您可以使用以下 PowerShell 命令:
PS C:\Users\Administrator> (Get-ADFSEndpoint | Where {$_.Protocol -eq "FederationMetadata" -or $_.Protocol -eq "Federation Metadata"}).FullUrl.ToString()结果您应该得到一个类似这样的链接:
https://onlyofficevm.northeurope.cloudapp.azure.com/FederationMetadata/2007-06/FederationMetadata.xml - 要验证 AD FS 是否已正确启动,请在网络浏览器中打开收到的链接。xml 应显示或下载。复制元数据 xml 的链接:在下一步中将需要它。
配置 ONLYOFFICE SP
- 确保您以管理员身份登录到您的 ONLYOFFICE 控制面板,然后在左侧边栏的 门户设置 部分中点击 SSO 选项卡。
您只能在 ONLYOFFICE 门户上为您的组织注册一个企业身份提供者。


- 使用 启用单点登录认证 开关启用 SSO,并将从 AD FS 复制的链接粘贴到 Idp 元数据 XML 的 URL 字段中。


按带有向上箭头的按钮以加载 IdP 元数据。ONLYOFFICE SP 设置 表单将自动填入来自 AD FS IdP 的数据。
- 在 自定义登录按钮标题 字段中,您可以输入任何文本替代默认文本(单点登录)。此文本将显示在用于通过 ONLYOFFICE 认证页面的单点登录服务登录门户的按钮上。


- 在 NameID 格式 选择器中,选择以下值:urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress。


- 在 IdP 公共证书 \ 高级设置 部分,取消选中 验证注销响应签名 选项,因为 AD FS 默认不需要此选项。


- 现在您需要向 SP 证书 部分添加证书。您可以生成自签名证书或添加任何其他证书。
在 新证书 窗口中,将 用于 选择器切换到 签名和加密 选项,因为 AD FS IdP 自动配置为验证数字签名和加密数据。


您应该得到类似的结果:


- 在 SP 证书 \ 高级设置 中,取消选中 签署注销响应,因为 AD FS 默认不需要此选项。

无需调整 属性映射 表单,因为我们将在 AD FS IdP 中设置这些参数。在 高级设置 部分,您可以选中 隐藏认证页面 选项以隐藏默认认证页面并自动重定向到 SSO 服务。重要如果您需要恢复默认认证页面(以便在 IDP 服务器故障时能够访问门户),您可以在浏览器地址栏中在您的门户域名后添加/Auth.aspx?skipssoredirect=true键。 - 点击 保存 按钮。ONLYOFFICE SP 元数据 部分应打开。


通过点击 下载 SP 元数据 XML 按钮验证我们的设置是否公开可用。XML 文件内容应显示。
- 从 SP 实体 ID(元数据 XML 链接) 字段复制 ONLYOFFICE SP 元数据的链接,并转到安装了 AD FS 的机器。


配置 AD FS IdP
- 为 .NET 应用程序启用强认证。
.NET Framework 3.5/4.0/4.5.x 应用程序可以通过启用
SchUseStrongCrypto注册表项将默认协议切换为 TLS 1.2。此注册表项将强制 .NET 应用程序使用 TLS 1.2。对于 Windows Server 2016 和 Windows Server 2012 R2 上的 AD FS,您需要使用 .NET Framework 4.0/4.5.x 键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319对于 .NET Framework 3.5 使用以下注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001对于 .NET Framework 4.0/4.5.x 使用以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 "SchUseStrongCrypto"=dword:00000001

或者,您可以使用以下 PowerShell 命令:
New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-Null有关更多详细信息,请参阅本文。
- 在 服务器管理器 中,打开 工具 -> AD FS 管理,


- 在 AD FS 管理 面板中,选择 信任关系 > 依赖方信任。点击右侧的 添加依赖方信任... 选项,打开 添加依赖方信任向导,


- 在向导窗口中,选择 导入在线或本地网络上发布的依赖方数据 单选按钮,将之前复制的 ONLYOFFICE SP 元数据链接粘贴到 联合元数据地址(主机名或 URL) 字段中,然后点击 下一步 按钮,


- 在 显示名称 字段中指定任何名称,然后点击 下一步 按钮,


- 选择 我不想为此依赖方信任配置多因素认证设置 选项并点击 下一步 按钮,


- 选择 允许所有用户访问此依赖方 选项并点击 下一步 按钮,


- 检查结果设置并点击 下一步 按钮,


- 保持默认选项不变并点击 关闭 按钮,


- 新窗口打开。在 发布转换规则 选项卡中,点击 添加规则... 按钮,


- 从 声明规则模板 列表中选择 发送 LDAP 属性作为声明 选项并点击 下一步 按钮,


- 在 声明规则名称 字段中输入任何名称。从 属性存储 列表中选择 Active Directory 选项,并根据下表填写 LDAP 属性到传出声明类型的映射 表单。准备好后,点击 完成。
LDAP 属性(选择或输入以添加更多) 传出声明类型(选择或输入以添加更多) Given-Name givenName Surname sn E-Mail-Addresses mail Telephone-Number mobile Title title physicalDeliveryOfficeName l 

- 在 编辑声明规则 窗口中,再次点击 添加规则... 按钮,从 声明规则模板 列表中选择 转换传入声明 选项并点击 下一步 按钮,


- 在 声明规则名称 字段中输入任何名称,并从列表中选择以下选项:
- 传入声明类型: mail,
- 传出声明类型: Name ID,
- 传出名称 ID 格式: Email


准备好后,点击 完成 按钮。
您应该得到类似的结果:


如果 AD FS 的注销不起作用,建议添加一个自定义声明规则,将
{portal-domain}替换为您的 SP 域,并将{ad-fs-domain}更改为您的 IdP 域:c:[Type == "mail"]=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/namequalifier"] = "http://{ad-fs-domain}/adfs/services/trust", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"] = "https://{portal-domain}/sso/metadata");

- 点击 确定 按钮,
- 为了使 SSO 能够从内网工作,您需要在 编辑全局认证策略(上下文菜单 AD FS / 认证策略)中启用 表单认证 选项,


- 打开创建的依赖方信任的属性并切换到 高级 选项卡,


在 安全哈希算法 列表中选择 SHA-1 选项。


检查 ONLYOFFICE SP 与 AD FS IdP 的工作
在 SP 端登录 ONLYOFFICE
- 转到 ONLYOFFICE 认证页面(例如,https://myportal-address.com/auth.aspx)。
- 点击 单点登录 按钮(如果您在配置 ONLYOFFICE SP 时指定了自己的文本,标题可能会有所不同)。如果按钮丢失,这意味着 SSO 未启用。


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


- 输入 AD FS IdP 帐户的登录名和密码,然后点击 登录 按钮。
- 如果凭据正确,我们将被重定向到门户的主页(如果缺少用户,将自动创建用户,或者如果 IDP 中的数据已更改,将更新数据)。
使用 SSO 认证添加的用户的个人资料
使用 SSO 认证创建的用户个人资料的编辑功能受到限制。从 IdP 接收到的用户个人资料字段无法编辑(即,名字、姓氏、电子邮件、职位 和 位置)。您只能从您的 IdP 帐户编辑这些字段。
下图显示了 SSO 用户的操作菜单:


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


使用 SSO 认证创建的用户在门户管理员的用户列表中标记为 SSO 图标:

