在Windows Server RDS上配置SSO(单点登录)身份验证

时间:2020-01-09 10:46:55  来源:igfitidea点击:

单点登录(SSO)是一种技术,它允许经过身份验证(登录)的用户访问其他域服务而无需重新进行身份验证。应用于远程桌面服务时,SSO允许登录到域计算机的用户在连接到RDS服务器或者启动已发布的RemoteApp时不重新输入帐户凭据(用户名和密码)。

在本文中,将很好地描述在运行Windows Server 2015和2012 R2的RDS服务器上配置透明SSO(单一登录)身份验证的特性。

系统要求:

  • 连接代理服务器和所有RDS服务器必须运行Windows Server 2012或者更高版本;
  • SSO仅在域环境中起作用:必须使用Active Directory用户帐户,RDS服务器和用户工作站必须包含在AD域中;
  • 必须在rdp客户端上使用RDP 8.0或者更高版本(无法在Windows XP中安装此版本的RDP客户端);
  • rdp客户端支持以下OS版本:Windows 10、8.1或者7; Windows 10,Windows 8.1或者Windows 7.
  • SSO仅与密码身份验证一起使用(智能卡为);
  • 连接设置中的RDP安全层应设置为"协商"或者" SSL"(TLS 1.0),加密模式应设置为"高"或者"符合FIPS"。

单一登录配置过程包括以下步骤:

  • 我们需要在RD网关,RD Web和RD连接代理服务器上颁发并分配SSL证书;
  • 必须在RDWeb服务器上启用Web SSO。
  • 必须配置凭据委派的组策略;
  • 必须使用GPO将证书指纹添加到受信任的.rdp发布者。

首先,我们需要颁发和分配SSL证书。在EKU(增强密钥用法)证书属性中,必须存在"服务器身份验证"标识符。我们将不介绍获取SSL证书的过程,因为它超出了本文的范围(我们可以自己生成一个自签名SSL证书,但是我们必须使用组策略将其部署到所有客户端上的受信任证书上) 。

证书是在" RDS部署"属性的"证书"部分中分配的。

然后,我们必须在所有具有IIS RDWeb目录的Web访问角色的服务器上启用" Windows身份验证",并禁用"匿名身份验证"。

保存更改后,重新启动IIS:

iisreset /noforce

如果使用的是RD网关,请确保未将其用于内部客户端的连接(必须选中"绕过本地地址的RD网关服务器"选项)。

下一步是凭据委派策略的配置。创建一个新的域GPO并将其链接到需要允许SSO访问RDS服务器的用户(计算机)。如果要允许所有域用户使用SSO,则可以编辑"默认域策略"。

该策略位于以下GPO部分:"计算机配置->策略->管理模板->系统->凭据委派->允许委派默认凭据"。该策略允许某些服务器访问Windows用户的凭据:

  • 必须启用该策略(" Enabled");
  • 我们必须将RDS服务器的名称添加到客户端可以自动向其发送用户凭据以执行SSO身份验证的服务器列表中。添加服务器的格式如下:TERMSRV/rd.contoso.com(请注意,所有TERMSRV字符必须为大写)。如果必须将此权限授予域中的所有终端服务器(不太安全),则可以使用以下结构:TERMSRV/*。contoso.com。

然后,为防止出现不信任远程应用程序发布者的窗口警告,请使用"站点到区域分配列表"策略将具有连接代理角色的服务器地址添加到客户端计算机上的受信任区域。文章如何在Windows 10上禁用打开文件安全警告):用户/计算机配置->管理工具-> Windows组件-> Internet Explorer-> Internet控制面板->安全页面。

指定" FQDN"服务器名称RDCB和区域" 2"(受信任的站点)。

然后在"用户/计算机配置->管理工具-> Windows组件-> Internet Explorer-> Internet控制面板->安全->受信任的站点区域"中启用"登录选项"策略,然后在下拉列表中选择"使用当前自动登录"用户名和密码。

在客户端上更新组策略后,如果尝试启动RemoteApp,则不会出现密码提示,但会出现一个警告窗口:

Do you trust the publisher of this RemoteApp program?

为了防止在用户登录时每次显示此消息,我们需要在RD连接代理上获取SSL证书指纹,并将其添加到受信任的rdp发布者列表中。为此,请在RDS Connection Broker服务器上运行PowerShell命令:

Get-Childitem CERT:\LocalMachine\My

复制证书指纹的值并将其添加到策略"指定代表RDP发布者的证书的SHA1指纹"策略中的指纹列表中(计算机配置->管理模板-> Windows桌面服务->远程桌面连接客户端)。

现在,SSO配置已结束,并且在应用策略之后,用户可以使用RDP连接到Windows Server RDS服务器场,而无需重新输入密码。

现在,当我们启动mstsc.exe(远程桌面连接客户端)并指定RDS服务器的名称时,"用户名"字段将自动以格式显示用户名([email protected]),并带有标题:

Your Windows logon credentials will be used to connect.

要将RD网关与SSO一起使用,我们需要启用策略"设置RD网关身份验证方法"(用户配置->策略->管理模板-> Windows组件->远程桌面服务-> RD网关),并将其值设置为使用本地登录的凭据

要在RD Web访问上使用Web SSO,请注意,建议将Internet Explorer与启用的Active X组件(称为Microsoft远程桌面服务Web访问控件(MsRdpClientShell))一起使用。