用户无法完成身份验证或必须完成身份验证两次

本文解决了多个可能会导致用户身份验证出现问题的问题。

拒绝访问并出现“受限制的登录类型”消息

在此情况下,尝试连接到 Windows 10 或 Windows Server 2016 计算机的 Windows 10 用户被拒绝访问并会收到以下消息:

远程桌面连接:系统管理员已限制可以使用的登录类型(网络或交互式)。 如需帮助,请与系统管理员或技术支持人员联系。

如果 RDP 连接需要网络级别身份验证(NLA),并且用户不是远程桌面用户组的成员,则会出现此问题。 如果远程桌面用户组尚未从网络用户权限分配到“访问此计算机”,则也可能发生这种情况。

若要解决此问题,请执行以下操作之一:

修改用户的组成员身份或用户权限分配

如果此问题只是影响一个用户,则最直接的解决方法就是将该用户添加到“远程桌面用户”组。

如果该用户已是此组的成员(或者多个组成员遇到相同的问题),请检查远程 Windows 10 或 Windows Server 2016 计算机上的用户权限配置。

  1. 打开组策略对象编辑器 (GPE) 并连接到远程计算机的本地策略。

  2. 转到“计算机配置\Windows 设置\安全设置\本地策略\用户权限分配”,右键单击“从网络访问此计算机”,然后选择“属性”。

  3. 检查“远程桌面用户”(或父组)的用户和组列表。

  4. 如果该列表不包含“远程桌面用户”或类似于“任何人”的父组,则必须将它添加到列表。 如果部署中有不止一台计算机,请使用组策略对象。

    例如,“从网络访问此计算机”的默认成员身份包括“任何人”。 如果部署使用组策略对象来删除“任何人”,则你可能需要通过更新组策略对象来添加“远程桌面用户”,以还原访问权限。

拒绝访问并出现“已拒绝远程调用 SAM 数据库”消息

如果域控制器运行 Windows Server 2016 或更高版本,而用户使用自定义的连接应用尝试建立连接,则很有可能会出现此行为。 具体而言,访问 Active Directory 中用户配置文件信息的应用程序将被拒绝访问。

此行为是 Windows 中的一项更改造成的。 在 Windows Server 2012 R2 及更低版本中,当用户登录到远程桌面时,远程连接管理器 (RCM) 会联系域控制器 (DC),以查询特定于远程桌面的有关 Active Directory 域服务 (AD DS) 中用户对象的配置。 此信息显示在“Active Directory 用户和计算机”MMC 管理单元中用户对象属性的“远程桌面服务配置文件”选项卡上。

从 Windows Server 2016 开始,RCM 不再查询 AD DS 中用户的对象。 如果由于使用远程桌面服务属性而需要 RCM 查询 AD DS,必须手动启用查询。

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 若要进行保护,请先备份注册表,然后再对其进行修改,以便在出现问题时还原它。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

若要在 RD 会话主机服务器上启用旧版 RCM 行为,请配置以下注册表项,然后重启 远程桌面服务服务

  • HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\<Winstation name>\
    • Name:fQueryUserConfigFromDC
    • 类型:Reg_DWORD
    • 值:1(十进制)

若要在 RD 会话主机服务器以外的服务器上启用旧 RCM 行为,请配置这些注册表项和以下附加注册表项(然后重启服务):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server

有关此行为的详细信息,请参阅 Windows Server 2016 中对远程连接管理器的更改。

用户无法使用智能卡登录

此部分介绍如何解决用户无法使用智能卡登录到远程桌面的三种常见情况。

无法通过智能卡登录到使用只读域控制器 (RODC) 的分支机构

使用 RODC 的分支站点中包含 RDSH 服务器的部署会出现此问题。 RDSH 服务器托管在根域中。 分支站点上的用户属于一个子域,并使用智能卡进行身份验证。 RODC 配置为缓存用户密码(RODC 属于“允许的 RODC 密码复制组”)。 当用户尝试登录到 RDSH 服务器上的会话时,他们会收到类似于“尝试的登录无效。 原因是用户名或身份验证信息错误”的消息。

此问题是根 DC 和 RODC 管理用户凭据加密的方式导致的。 根 DC 使用加密密钥来加密凭据,RODC 为客户端提供解密密钥。 当用户收到“无效”错误时,这意味着两个密钥不匹配。

若要解决此问题,可尝试以下方法之一:

  • 通过在 RODC 上关闭密码缓存或将可写 DC 部署到分支站点来更改 DC 拓扑。
  • 将 RDSH 服务器移到用户所在的子域。
  • 允许用户在不使用智能卡的情况下登录。

请注意,上述所有解决方案都需要降低性能或安全级别。

用户无法使用智能卡登录到 Windows Server 2008 SP2 计算机

当用户登录到已使用 KB4093227 (2018.4B) 更新的 Windows Server 2008 SP2 计算机时,会出现此问题。 当用户尝试使用智能卡登录时,他们被拒绝访问消息,例如“找不到有效的证书”。 检查卡是否正确插入并牢固入位。同时,Windows Server 计算机会记录应用程序事件“从插入的智能卡检索数字证书时出错。 签名无效。”

若要解决此问题,请使用 KB 4093227 的 2018.06 B 再发行版 Windows Server 2008 中 Windows 远程桌面协议 (RDP) 拒绝服务漏洞的安全更新说明:2018 年 4 月 10 日更新 Windows Server 计算机。

无法使用智能卡保持登录状态且“远程桌面服务”服务挂起

当用户登录到已使用 KB 4056446 更新的 Windows 或 Windows Server 计算机时,会出现此问题。 一开始,用户也许可以使用智能卡登录到该系统,但随后会接收“SCARD_E_NO_SERVICE”错误消息。 远程计算机可能无响应。

若要解决此问题,请重启远程计算机。

若要解决此问题,请使用相应的修复程序更新远程计算机:

如果远程电脑已锁定,则用户需要输入密码两次

当用户尝试连接到部署中运行 Windows 10 版本 1709 的远程桌面,而该部署中的 RDP 连接不需要 NLA 时,可能会出现此问题。 在这种情况下,如果远程桌面已锁定,则用户在连接时需要输入其凭据两次。

若要解决此问题,请使用 KB 4343893 (OS 内部版本 16299.637)更新 Windows 10 版本 1709 计算机(2018 年 8 月 30 日)KB4343893。

用户无法登录并收到“身份验证错误”和“CredSSP 加密数据库修正”消息

当用户尝试使用 Windows Vista SP2 及更高版本或 Windows Server 2008 SP2 及更高版本的任何 Windows 版本登录时,他们被拒绝访问并接收如下消息:

发生身份验证错误。 不支持请求的功能。 ...这可能是由于 CredSSP 加密 oracle 修正...

“CredSSP 加密 Oracle 修正”是指在 2018 年 3 月、4 月和 5 月发布的一组安全更新。 CredSSP 是一个身份验证提供程序,用于处理其他应用程序的身份验证请求。 在 2018 年 3 月 13 日,“3B”和后续更新解决了一个漏洞,攻击者可能会利用该漏洞来中继用户凭据,以在目标系统上执行代码。

初始更新添加了对新的组策略对象加密 Oracle 修正的支持,该对象具有以下可能的设置:

  • 有漏洞:使用 CredSSP 的客户端应用程序可以回退到不安全的版本,但此行为会将远程桌面透露给攻击者。 使用 CredSSP 的服务接受尚未更新的客户端。

  • 已缓解:使用 CredSSP 的客户端应用程序无法回退到不安全的版本,但使用 CredSSP 的服务接受尚未更新的客户端。

  • 强制更新的客户端:使用 CredSSP 的客户端应用程序无法回退到不安全的版本,使用 CredSSP 的服务不会接受未修补的客户端。

    注意

    在所有远程主机支持最新版本之前,不应部署此设置。

2018 年 5 月 8 日更新已将默认的“加密数据库修正”设置从“有漏洞”更改为“已缓解”。 进行此项更改后,包含更新的远程桌面客户端无法连接到不包含更新的服务器(或尚未重启的已更新服务器)。 有关 CredSSP 更新的详细信息,请参阅 KB 4093492

若要解决此问题,请更新并重启所有系统。 有关更新的完整列表以及有关漏洞的详细信息,请参阅 CVE-2018-0886 | CredSSP 远程代码执行漏洞

在完成更新之前若要解决此问题,请在 KB 4093492 中查看允许的连接类型。 如果没有可行的替代方法,可以考虑以下方法之一:

  • 对于受影响的客户端计算机,请将“加密数据库修正”策略设置回“有漏洞”。
  • 修改计算机配置\管理模板\Windows 组件\远程桌面服务\远程桌面会话主机\安全组策略文件夹中的以下策略:
    • 将“要求对远程(RDP)连接使用特定的安全层”设置为“已启用”,并选择“RDP”。

    • 将“要求使用网络级别身份验证来远程连接的用户进行身份验证”设置为“已禁用”。

      重要

      更改这些组策略会降低部署的安全性。 建议仅临时使用它们,如果需要使用的话。

有关使用组策略的详细信息,请参阅修改阻止 GPO

更新客户端计算机后,某些用户需要登录两次

用户使用运行 Windows 7 或 Windows 10 版本 1709 的计算机登录到远程桌面时,会立即看到再次登录的提示。 如果客户端计算机有以下更新,则会出现此问题:

若要解决此问题,请确保用户希望连接到的计算机(以及 RDSH 或 RDVI 服务器)在 2018 年 6 月完全更新。 这包括以下更新:

在使用 Remote Credential Guard 且包含多个 RD 连接代理的部署中,用户被拒绝访问

如果使用了 Windows Defender Remote Credential Guard,使用两个或更多个远程桌面连接代理的高可用性部署中会出现此问题。 用户无法登录到远程桌面。

出现此问题的原因是 Remote Credential Guard 使用 Kerberos 进行身份验证,并限制 NTLM。 但是,在使用负载均衡的高可用性配置中,RD 连接代理无法支持 Kerberos 操作。

如果需要将高可用性配置与负载均衡的 RD 连接代理配合使用,可以通过禁用 Remote Credential Guard 来解决此问题。 有关如何管理 Windows Defender Remote Credential Guard 的详细信息,请参阅使用 Windows Defender Remote Credential Guard 保护远程桌面凭据