Skip to main content

知识库

活动目录联盟服务 (ADFS) 的单点登录

上次修改时间: 2025年4月2日

TeamViewer 单点登录 (SSO) 旨在通过将 TeamViewer 与身份提供商和用户目录连接起来,减少大型公司的用户管理工作。

本文适用于持有企业/Tensor 许可证的 TeamViewer 客户 。

要求

要使用TeamViewer 单点登录,您需要

  • TeamViewer 13.2.1080 或更新版本
  • 兼容 SAML 2.0 的身份提供商 (IdP)*
  • TeamViewer 帐户,用于访问管理控制台和添加域
  • 访问域名的 DNS 管理,以验证域名所有权
  • TeamViewer Tensor 许可证

TeamViewer 配置

单点登录(SSO)在域一级为所有使用该域电子邮件地址的TeamViewer 账户激活。一旦激活,所有登录相应TeamViewer 账户的用户都会被重定向到为该域配置的身份供应商。

为安全起见,并防止滥用,在激活该功能之前,必须验证域名所有权。

添加新域

要激活单点登录,请登录管理控制台 ,选择 公司管理,然后选择单点登录菜单项。单击添加域并输入要激活 SSO 的域。

您还需要提供身份供应商的元数据。有三种方法可供选择:

  • 通过 URL:在相应字段中输入 IdP 元数据 URL
  • 通过 XML:选择并上传元数据 XML
  • 手动配置:手动输入所有必要信息。请注意,公钥必须是 Base64 编码的字符串。

完成后,点击继续。

现在,选择要从 SSO 中排除的电子邮件地址或用户组,然后点击添加域。

创建自定义标识符

添加域名后,就可以生成自定义标识符。TeamViewer 不会存储该自定义标识符,但会将其用于单点登录的初始配置。任何时候都不能更改,否则会破坏单点登录,需要重新设置。任何随机字符串都可以用作客户标识符。以后配置 IDP 时需要使用该字符串。要生成自定义标识符,请单击生成。

验证域名所有权

成功添加域名后,您需要验证域名所有权。

在域名验证完成之前,单点登录将无法激活。

要验证域名,请为您的域名创建一个新的 TXT 记录,并使用验证页面上显示的值。

注意:由于 DNS 系统的原因,验证过程可能需要几个小时。

注意:根据您的域管理系统,输入字段的说明可能有所不同。

创建新 TXT 记录后,单击 "开始验证 "按钮启动验证过程。

请注意,由于 DNS 系统的原因,验证过程可能需要几个小时。

提示:TeamViewer 将在开始验证后的 24 小时内查找 TXT 验证记录。如果在 24 小时内找不到 TXT 记录,则验证失败,状态也会相应更新。在这种情况下,您需要通过此对话框重新启动验证。

活动目录联盟服务(ADFS)的身份提供商设置

以下步骤描述了 Active Directory 联合服务 (ADFS) 的设置过程。说明和命令来自运行Windows Server 2016 Standard(版本 1607)的计算机。

配置基本包括以下两个步骤:

1) 为TeamViewer Single Sign-On 服务添加 ADFS 依赖方信任。这一步需要输入TeamViewer SSO 服务的元数据。可以通过以下方式之一完成:

  • 自动:这只需要输入元数据 XML 文件的 URL。ADFS 会下载该文件,并自动填写可信赖方信任的所有必填字段。它要求 ADFS 服务器能访问互联网。
  • 半自动:与自动方法类似,但不是提供元数据的 URL,而是事先下载文件本身,并将其作为 XML 文件提供给 ADFS。如果 ADFS 服务器无法访问互联网,这种方法会很有用。
  • 手动:如果上述方法都不适用,则可将元数据手动输入 ADFS。

2) 在新的可信赖方信任的索赔签发策略中添加一条转换规则。

以下各节将介绍使用PowerShell命令提示符和ADFS 管理图形用户界面对所有三种情况进行的配置。

使用 PowerShell 自动配置

打开一个新的 PowerShell 命令窗口,输入以下命令向 ADFS 添加一个具有默认索赔签发策略的新可信赖方信任:

$customerId = 'Your Generated Customer Identifier'
$claimRules = @'
 @RuleTemplate = "LdapClaims"
 @RuleName = "TeamViewer Login"
 c:[Type ==
 "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
 Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types =
 ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
 "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
 ";objectGUID,mail;{0}", param = c.Value);
 @RuleName = "TeamViewer Customer ID"
 => issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
 Value = "
'@ + $customerId + '");'
Add-AdfsRelyingPartyTrust `
 -Name TeamViewer `
 -MetadataUrl https://sso.teamviewer.com/saml/metadata.xml `
 -IssuanceTransformRules $claimRules `
 -AccessControlPolicyName "Permit everyone" `
 -AutoUpdateEnabled $true `
 -MonitoringEnabled $true `
 -Enabled $true

根据需要调整-Name 参数值。这是 ADFS 图形用户界面中显示的名称。此外,-AccessControlPolicyName 也可能因系统而异。

以后可以通过 PowerShell 或 ADFS 图形用户界面更改所有设置。

使用 PowerShell 进行半自动配置

这与上述 "自动 "方法非常相似。它要求事先下载元数据 XML 文件,并将其复制到 ADFS 服务器。

元数据文件可以点击 这里 下载。

以下命令假定在 PowerShell 命令提示符的当前目录下有元数据 XML 文件"metadata.xml"。

$customerId = 'Your Generated Customer Identifier'
$claimRules = @'
 @RuleTemplate = "LdapClaims"
 @RuleName = "TeamViewer Login"
 c:[Type ==
 "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
 Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types =
 ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
 "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
 ";objectGUID,mail;{0}", param = c.Value);
 @RuleName = "TeamViewer Customer ID"
 => issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
 Value = "
'@ + $customerId + '");'
Add-AdfsRelyingPartyTrust `
 -Name TeamViewer `
 -MetadataFile metadata.xml `
 -IssuanceTransformRules $claimRules `
 -AccessControlPolicyName "Permit everyone" `
 -Enabled $true

与 "自动 "方法的主要区别在于使用了"-MetadataFile "参数(而不是"-MetadataUrl" - 第 14 行)。自动更新启用 "和 "监控启用 "参数被省略,因为这两个参数都需要提供一个有效的元数据 URL。

使用 Powershell 手动配置

手动配置需要下载并提取TeamViewer SAML 服务提供商签名/加密证书的公钥。

在 PowerShell 命令提示符中执行以下命令,手动添加可信赖方信任:

$customerId = 'Your Generated Customer Identifier'
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(".\sso.teamviewer.com - saml.cer", "")
$claimRules = @'
 @RuleTemplate = "LdapClaims"
 @RuleName = "TeamViewer Login"
 c:[Type ==
 "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
 Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types =
 ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
 "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
 ";objectGUID,mail;{0}", param = c.Value);
 @RuleName = "TeamViewer Customer ID"
 => issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
 Value = "
'@ + $customerId + '");'
$samlEndpoints = @(
 (New-AdfsSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri https://sso.teamviewer.com/saml/acs -Index 0),
 (New-AdfsSamlEndpoint -Binding Redirect -Protocol SAMLAssertionConsumer -Uri https://sso.teamviewer.com/saml/acs -Index 1)
)
Add-AdfsRelyingPartyTrust `
 -Name "TeamViewer" `
 -Identifier "https://sso.teamviewer.com/saml/metadata" `
 -RequestSigningCertificate $cert `
 -EncryptionCertificate $cert `
 -SamlEndpoint $samlEndpoints `
 -IssuanceTransformRules $claimRules `
 -AccessControlPolicyName "Permit everyone" `
 -Enabled $true

还请查看 "Add-AdfsRelyingPartyTrust "PowerShell 命令小程序的官方文档: https://technet.microsoft.com/en-us/library/ee892322.aspx

使用 ADFS 管理工具(图形)进行半自动配置

1. 从服务器管理器启动ADFS 管理工具。

2. 导航至ADFS ➜ 依赖方信任,然后单击右侧导航窗格中的添加依赖方信任。

3) 选择 "意识到索赔",单击 "开始"按钮启动向导

4) 根据您想要的或变体,选择

  • 通过 URL 导入元数据

6) 为可信赖方信任选择访问控制策略。例如,选择允许所有人

7) 在摘要页面点击 "下一步",添加可信赖方信任

接下来,需要为新的可信赖方信任配置索赔签发策略。

  1. 选择依赖方信任,然后单击右侧导航窗格中的"编辑申请发布策略..."。
  2. 单击 "添加规则",然后选择 "将LDAP 属性作为索赔发送"。
  3. 输入转换规则的名称,如TeamViewer Login
  4. 选择Active Directory作为属性存储。
  5. 添加以下两个映射:
Image

6. 单击完成。

7. 再次添加 "添加规则"并选择 "使用自定义规则发送索赔",添加第二条索赔规则。

8. 输入自定义索赔规则的名称,例如TeamViewer Customer ID

9. 输入以下自定义规则,并将值设置为生成的客户标识符:

=> issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier", Value = "Your Generated Customer Identifier");

请确保在值字段中添加您自己生成的客户标识符。

10. 点击完成

使用 ADFS 管理工具(图形)手动配置

手动配置需要下载并提取TeamViewer SAML 服务提供商签名/加密证书的公钥。

请参阅下面的 "技术信息 "部分,了解如何获取证书。

1. 从服务器管理器启动ADFS 管理工具

2. 导航至ADFS - 依赖方信任,然后单击右侧导航窗格中的添加依赖方信任...

3. 选择 "意识到索赔",单击 "开始 "按钮启动向导

4. 选择手动输入数据(第三点)

Image

5. 为可信赖方信托选择一个名称,如TeamViewer 或sso.teamviewer.com或选择预填名称,如适用。

6. 浏览证书文件(见上文注释)

7. 选中 "启用对 SAML 2.0 WebSSO 协议的支持"复选框,并输入以下服务 URL: https://sso.teamviewer.com/saml/acs

8. 在 "配置标识符 "页面,添加https://sso.teamviewer.com/saml/metadata作为标识符

9. 确认添加可信赖方信任。

10. 按照上述自动 程序的说明配置索赔签发策略。

11. 接下来,配置依赖方信任的签名证书。因此,打开属性(双击)并导航到签名 选项卡。浏览到与上述相同的证书文件

12. 可选择向可信赖方信任添加第二个 SAML 端点。导航至端点 选项卡,然后单击添加 SAML端点

TeamViewer 客户端配置

TeamViewer 从 13.2.1080 版开始与单点登录兼容。

以前的版本不支持单点登录,也不能在登录时将用户重定向到身份供应商。客户端配置是可选的,但可以更改用于单点登录 IdP 的浏览器。

TeamViewer 客户端默认使用嵌入式浏览器进行身份供应商身份验证。如果希望使用操作系统的默认浏览器,可以更改此行为:

Windows:

HKEY_CURRENT_USER\Software\TeamViewer\SsoUseEmbeddedBrowser = 0 (DWORD)

macOS:

defaults write com.teamviewer.teamviewer.preferences SsoUseEmbeddedBrowser -int 0

注意:创建或更改注册表后,需要重新启动TeamViewer 客户端。