TeamViewer 单点登录之 Active Directory Federation Services(ADFS)

无评分

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

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

要求

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

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

TeamViewer管理控制台(MCO)配置

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

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

添加新域名

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

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

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

SSO 1.png

创建自定义标识符

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

SSO 2.pngSSO 3.png

验证域名所有权

成功添加域后,您需要验证域所有权。
在域验证完成之前,不会激活单点登录。

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

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

SSO 4.png

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

SSO 5.png

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

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

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

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

提示: 为单点登录添加域时,建议将拥有帐户添加到排除列表中。这样做的原因是即使IdP不工作,您仍然可以访问域配置。
示例:TeamViewer帐户“admin@example.com”为单点登录添加域“example.com”。添加域后,应将电子邮件地址“admin@example.com”添加到排除列表中。.

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 - >依赖方信任,然后单击右侧导航窗格中的添加信赖方信任....
    Screenshot01.PNG
  3. 选择声明感知并单击开始按钮启动向导
    Screenshot02.PNG
  4. 根据您是要使用自动变体还是半自动变体,请选择
    - 通过URL导入元数据
    Screenshot03.PNG
     
    - 输入元数据URL:https://sso.teamviewer.com/saml/metadata.xml通过文件导入元数据。浏览到下载的元数据XML文件。该文件可以从上面的URL下载
    Screenshot04.PNG
  5. 选择信赖方信任的名称,例如TeamViewersso.teamviewer.com,或者选择预先填写的名称(如果适用)
    Screenshot05.PNG
  6. 选择信赖方信任的访问控制策略。例如。选择允许每个人
    Screenshot06.PNG
  7. 在摘要屏幕上单击“下一步”以添加信赖方信任
    Screenshot07.PNG

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

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

    LDAP 属性

    输出类型

    附注

    objectGUID

    Name ID

    手动输入 LDAP 属性字段的值。

    在开始输入之前,您可能需要先点击下拉箭头。

    E-Mail-Addresses

    E-Mail Address

     

    Screenshot08.PNG
  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 - 信赖方信任,然后单击右侧导航窗格中的添加信赖方信任....
    Screenshot09.PNG
  3. 选择声明感知并单击“开始”按钮启动向导
    Screenshot10.PNG
  4. 选择手动输入数据(第三个要点)
    Screenshot11.PNG
  5. 选择信赖方信任的名称,例如TeamViewersso.teamviewer.com,或选择预先填写的名称(如果适用)
    Screenshot12.PNG
  6. 浏览到证书文件(参见上面的评论)
    Screenshot13.PNG
  7. 选中“启用对SAML 2.0 WebSSO协议的支持”复选框,然后输入以下服务URL:https://sso.teamviewer.com/saml/acs
    Screenshot14.PNG
  8. 在“配置标识符”页面上,添加https://sso.teamviewer.com/saml/metadata作为标识符
    Screenshot15.PNG
  9. 确认添加信赖方信任。
  10. 按照上面的自动过程所述配置索赔发布策略。
  11. 接下来,配置信赖方信任的签名证书。因此,打开属性(双击)并导航到“签名”选项卡。浏览到上面提到的相同证书文件
    Screenshot16.PNG
  12. (可选)将第二个SAML端点添加到信赖方信任。导航到“端点”选项卡,然后单击“添加SAML端点
    - 选择SAML Assertion Consumer作为端点类型
    - 选择重定向为绑定
    - 将索引设置为1
    - 将可信URL设置为https://sso.teamviewer.com/saml/acs
    Screenshot17.PNG

TeamViewer客户端配置

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

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

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

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

版本历史
修订号
2 / 2
上次更新时间:
‎15 五月 2019, 8:11 PM
更新依据:
 
贡献者