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

本文适用于具有Enterprise/Tensor许可证的TeamViewer客户。

要求

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

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

TeamViewer管理控制台(MCO)配置

使用此域的电子邮件地址为所有TeamViewer帐户在域级别激活单点登录(SSO)。激活后,登录相应TeamViewer帐户的所有用户都将重定向到已为域配置的身份提供程序。

出于安全原因和防止滥用,需要在激活功能之前验证域所有权。

添加新域名

要激活SSO,请登录TeamViewer 管理平台 (Management Console)并选择Single Sign-On菜单条目。单击添加域,然后输入要为其激活SSO的域。

您还需要为身份提供者提供元数据。有三种选择可供选择:

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

创建自定义标识符

添加域后,可以生成自定义标识符。 TeamViewer不存储此自定义标识符,但用于SSO的初始配置。它不能在任何时间点更改,因为这将打破单点登录并且需要新的设置。任何随机字符串都可以用作客户标识符。稍后需要此字符串来配置IdP。

验证域名所有权

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

在域验证完成之前,不会激活单点登录。

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

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

添加TXT记录的对话框可能类似于:

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

创建新的TXT记录后,单击“开始验证”按钮开始验证过程。

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

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

💡提示: 为单点登录添加域时,建议将拥有帐户添加到排除列表中。这样做的原因是即使IdP不工作,您仍然可以访问域配置。

示例:TeamViewer帐户“[email protected]”为单点登录添加域“example.com”。添加域后,应将电子邮件地址“[email protected]”添加到排除列表中。.

Active Directory联合身份验证服务(ADFS)的身份提供程序设置

以下步骤描述了Active Directory联合身份验证服务(ADFS)的设置过程。已从运行Windows Server 2016 Standard(版本1607)的计算机上获取了方向和命令。

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

1)为TeamViewer单点登录服务添加ADFS信赖方信任。此步骤需要输入TeamViewer SSO服务的元数据。这可以通过以下方式之一完成:

  • - 自动:这只需要输入元数据XML文件的URL。 ADFS下载该文件,并自动填写依赖方信任的所有必填字段。它要求ADFS服务器可以访问Internet。
  • - 半自动:与自动方法类似,但不是提供元数据的URL,而是预先下载文件本身并将其作为XML文件提供给ADFS。如果ADFS服务器没有Internet访问权限,这将非常有用。
  • - 手动:如果上述方法均不适用,则可以手动将元数据输入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”参数值(第13行)。 这是ADFS图形用户界面中显示的名称。 此外,访问控制策略的名称(第16行)可能在您的系统上有所不同。

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

使用PowerShell进行半自动配置

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

元数据文件可以从以下URL下载:

https://sso.teamviewer.com/saml/metadata.xml

以下命令假定元数据XML文件在PowerShell命令提示符的当前目录中可用作“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行)。 省略了“-AutoUpdateEnabled”和“-MonitoringEnabled”参数,因为两者都需要给出有效的元数据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导入元数据

5.选择信赖方信任的名称,例如TeamViewersso.teamviewer.com,或者选择预先填写的名称(如果适用)

6.选择信赖方信任的访问控制策略。例如。选择允许每个人

7.在摘要屏幕上单击“下一步”以添加信赖方信任

接下来,需要为新的依赖方信任配置声明发布策略。

  1. 选择信赖方信任,然后单击右侧导航窗格中的“编辑索赔颁发策略...”。
  2. 单击添加规则,然后选择将LDAP属性作为声明发送
  3. 输入转换规则的名称,例如TeamViewer登录
  4. 选择Active Directory作为属性存储。
  5. 添加以下两个映射LDAP 属性

6.单击完成

7.通过再次添加添加规则添加第二个声明规则,然后选择使用自定义规则发送声明

8.输入自定义声明规则的名称,例如 TeamViewer客户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.选择手动输入数据(第三个要点)

5.选择信赖方信任的名称,例如TeamViewersso.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客户端配置

从版本13.2.1080开始,TeamViewer与Single Sign-On兼容。

以前的版本不支持单点登录,并且在登录期间无法将用户重定向到您的身份提供商。客户端配置是可选的,但允许更改已使用的浏览器以进行IdP的SSO登录。

默认情况下,TeamViewer客户端将使用嵌入式浏览器进行身份提供程序身份验证。如果您更喜欢使用操作系统的默认浏览器,则可以通过以下注册表项更改此行为:

Windows

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

macOS:

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

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