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 导入元数据
- 输入元数据 URL: https://sso.teamviewer.com/saml/metadata.xml通过文件导入元数据。浏览下载的元数据 XML 文件。该文件可从上述 URL 下载。
5) 为可信赖方信托选择一个名称,如TeamViewer 或sso.teamviewer.com或选择预填名称(如适用
6) 为可信赖方信任选择访问控制策略。例如,选择允许所有人
7) 在摘要页面点击 "下一步",添加可信赖方信任
接下来,需要为新的可信赖方信任配置索赔签发策略。
- 选择依赖方信任,然后单击右侧导航窗格中的"编辑申请发布策略..."。
- 单击 "添加规则",然后选择 "将LDAP 属性作为索赔发送"。
- 输入转换规则的名称,如TeamViewer Login
- 选择Active Directory作为属性存储。
- 添加以下两个映射:
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. 选择手动输入数据(第三点)
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端点
- 选择 SAML 断言消费者作为端点类型
- 选择重定向作为绑定
- 将索引设置为 1
- 将受信任的 URL 设置为https://sso.teamviewer.com/saml/acs
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 客户端。