在登录 Azure 或 Intune 期间,会反复提示联盟Office 365输入凭据

备注

Office 365 ProPlus 正在重命名为 适用于企业的 Microsoft 365 应用。 有关此更改的详细信息, 请阅读此博客文章

重要

本文包含的信息演示如何帮助降低安全设置或如何关闭计算机上安全功能。 您可以进行这些更改以解决特定问题。 在进行更改之前,建议您评估与在你的特定环境中实施此解决方法相关的风险。 如果实现此解决方法,请执行任何适当的附加步骤来帮助保护计算机。

问题

当用户在登录 Microsoft 云服务(如 Office 365、Microsoft Azure 或 Microsoft Intune)期间尝试对 Active Directory 联合身份验证服务 (AD FS) 服务终结点进行身份验证时,会反复提示联盟用户输入凭据。 当用户取消时,用户会收到" 拒绝访问" 错误消息。

原因

该症状指示使用 AD FS Windows集成身份验证时的问题。 如果满足以下一个或多个条件,则可能会发生此问题:

  • 使用的用户名或密码不正确。

  • Internet Information Services (IIS) 身份验证设置在 AD FS 中设置不正确。

  • 与用于 (AD FS 联合服务器场的服务帐户关联的服务帐户的服务主体名称) SPN 服务名称丢失或损坏。

    备注

    只有在 AD FS 作为联合服务器场实现,而未在独立配置中实现时,才能发生这种情况。

  • 扩展身份验证保护将以下一项或多条标识为中间人攻击的来源:

    • 一些第三方 Internet 浏览器
    • 企业网络防火墙、网络负载平衡器或其他网络设备正在以可能重写 IP 负载数据的方式将 AD FS 联合身份验证服务发布到 Internet。 这可能需要包括以下类型的数据:
      • 安全套接字层 (SSL) 桥接

      • SSL 卸载

      • 有状态数据包筛选

        有关更多信息,请参阅以下 Microsoft 知识库文章:

        2510193支持的方案,用于使用 AD FS 在 Office 365、Azure 或 Intune 中设置单一登录

    • 监控或 SSL 解密应用程序在客户端计算机上安装或处于活动状态
  • 域名系统 (DNS) AD FS 服务终结点的解析是通过 CNAME 记录查找而不是通过 A 记录查找执行的。

  • Windows Internet Explorer未配置为将集成Windows传递到 AD FS 服务器。

开始疑难解答之前

检查用户名和密码不是问题的原因。

  • 确保使用了正确的用户名,并且其用户主体名称采用 UPN (格式) 名称。 例如,johnsmith@contoso.com。

  • 确保使用了正确的密码。 若要仔细检查是否使用了正确的密码,可能需要重置用户密码。 有关详细信息,请参阅以下 Microsoft TechNet 文章:

    重置用户密码

  • 确保帐户未锁定、过期或在指定的登录时间之外使用。 有关详细信息,请参阅以下 Microsoft TechNet 文章: 管理用户

验证原因

若要检查 Kerberos 问题是否导致出现问题,请通过启用 AD FS 联合服务器场上的基于表单的身份验证来临时绕过 Kerberos 身份验证。 为此,请按照下列步骤操作:

步骤 1:web.config AD FS 联合服务器场中每台服务器上编辑文件

  1. 在Windows资源管理器"中,找到 C:\inetpub\adfs\ls\ 文件夹,然后制作文件web.config副本。

  2. 单击 "开始",单击 "所有 程序",单击" 附件",右键单击 记事本", 然后单击"以管理员角色 运行"。

  3. 在“文件”菜单上单击“打开”。 在"文件名" 框中,C:\inetpub\adfs\ls\web.config,然后单击"打开 "。

  4. 在web.config文件中,执行以下步骤:

    1. 找到包含 的行 <authentication mode> ,然后将它更改为 <authentication mode="Forms"/> 。

    2. 找到以 开头的节,然后更改节,以便首先<<localAuthenticationTypes> add name="Forms">项,如下所示:

      <localAuthenticationTypes>
      <add name="Forms" page="FormsSignIn.aspx" />
      <add name="Integrated" page="auth/integrated/" />
      <add name="TlsClient" page="auth/sslclient/" />
      <add name="Basic" page="auth/basic/" />
      
  5. 在“文件”菜单上,单击“保存”。

  6. 在提升的命令提示符下,使用 iisresetcommand 重新启动 IIS。

步骤 2:测试 AD FS 功能

  1. 在连接到本地 AD DS 环境并经过身份验证的客户端计算机上,登录到云服务门户。

    应体验基于表单的登录,而不是无缝的身份验证体验。 如果使用基于表单的身份验证成功登录,这将确认 AD FS 联合身份验证服务中存在 Kerberos 问题。

  2. 按照"解决方案"部分中的步骤操作之前,将 AD FS 联合服务器场中每台服务器的配置恢复为以前的身份验证设置。 若要还原 AD FS 联合服务器场中每台服务器的配置,请按照以下步骤操作:

    1. 在Windows资源管理器中,找到 C:\inetpub\adfs\ls\ 文件夹,然后删除web.config文件。
    2. 将你在"步骤 1:编辑 AD FS 联合服务器场中每台服务器的 web.config 文件"部分中创建的 web.config 文件的备份移动到 C:\inetpub\adfs\ls\ 文件夹中。
  3. 在提升的命令提示符下,使用 iisresetcommand 重新启动 IIS。

  4. 检查 AD FS 身份验证行为是否还原到原始问题。

解决方案

要解决限制 AD FS 身份验证的 Kerberos 问题,请根据情况使用以下一种或多种方法。

解决方案 1:将 AD FS 身份验证设置重置为默认值

如果 AD FS IIS 身份验证设置不正确,或者 AD FS 联合身份验证服务和代理服务的 IIS 身份验证设置不匹配,则一个解决方案是,将所有 IIS 身份验证设置重置为默认 AD FS 设置。

下表列出了默认身份验证设置。

虚拟应用程序 身份验证级别 (级别)
默认网站/adfs 匿名身份验证
默认网站/adfs/ls 匿名身份验证、Windows身份验证

在每个 AD FS 联合服务器和每个 AD FS 联合服务器代理上,使用以下 Microsoft TechNet 文章中的信息将 AD FS IIS 虚拟应用程序重置为默认身份验证设置:

在 IIS 7 中配置身份验证

解决方案 2:更正 AD FS 联合服务器场 SPN

备注

仅在将 AD FS 实现为联合服务器场时,才尝试此解决方案。 请勿在 AD FS 独立配置中尝试此分辨率。

若要解决 AD FS 服务 SPN 在 AD FS 服务帐户上丢失或损坏的问题,请对 AD FS 联合服务器场中的一台服务器执行以下步骤:

  1. 打开"服务管理"管理单元。 为此,请单击"开始 ", 单击"所有程序", 再单击 "管理工具",然后单击"服务 "。

  2. 双击 "AD FS (2.0) Windows服务"。

  3. "登录" 选项卡上,记下此帐户中显示的 服务帐户

  4. 单击 "开始",单击 "所有 程序",再单击"附件", 右键单击"命令提示 ",然后单击"以 管理员角色运行"。

  5. 键入以下命令,然后按 Enter 键。

    SetSPN –f –q host/<AD FS service name>
    

    备注

    在此命令中, <AD FS service name> 表示完全限定的域名 (FQDN) AD FS 服务终结点的服务名称。 它不表示Windows AD FS 服务器的主机名。

    • 如果命令返回了多个条目,并且结果与步骤 3 中记录的帐户外的其他用户帐户关联,请删除该关联。 为此,请运行下列命令:

      SetSPN –d host/<AD FS service name><bad_username>
      
    • 如果命令返回了多个条目,并且 SPN 使用与 Windows 中 AD FS 服务器的计算机名称相同的名称,则 AD FS 的联盟终结点名称不正确。 必须再次实现 AD FS。 AD FS 联合服务器场的 FQDN 不能与现有Windows的主机名相同。

    • 如果 SPN 不存在,请运行以下命令:

      SetSPN –a host/<AD FS service name><username of service account>  
      

      备注

      在此命令中 <username of service account> ,表示步骤 3 中说明的用户名。

  6. 在 AD FS 联合服务器场的所有服务器上执行这些步骤后,右键单击"服务管理"管理单元中的 "AD FS (2.0) Windows 服务",然后单击 "重新启动"。

解决方案 3:解决身份验证的扩展保护问题

若要解决身份验证扩展保护阻止成功身份验证的问题,请使用以下建议的方法之一:

  • 方法 1:Windows Internet Explorer 8 (或更高版本的程序) 登录。
  • 方法 2:以 SSL 桥接、SSL 卸载或状态数据包筛选不重写 IP 有效负载数据的方式将 AD FS 服务发布到 Internet。 用于此目的的最佳实践建议是使用 AD FS 代理服务器。
  • 方法 3:关闭或禁用监视或 SSL 解密应用程序。

如果无法通过这些方法之一解决此问题,可以针对被动和主动客户端禁用身份验证扩展保护。

解决方法:禁用身份验证扩展保护

警告

建议您不要将此过程用作长期解决方案。 禁用身份验证扩展保护会通过检测集成身份验证终结点上的某些中间人攻击来削弱 AD FS 服务Windows配置文件。

备注

如果此解决方法适用于第三方应用程序功能,则还应卸载客户端操作系统上的修补程序,以扩展身份验证保护。

对于被动客户端

若要禁用被动客户端的身份验证扩展保护,请对 AD FS 联合服务器场中所有服务器上以下 IIS 虚拟应用程序执行以下过程:

  • 默认网站/adfs
  • 默认网站/adfs/ls

为此,请按照下列步骤操作:

  1. 打开 IIS 管理器并导航到要管理的级别。 有关打开 IIS 管理器的信息,请参阅 Open IIS Manager (IIS 7)
  2. 在"功能视图"中,双击"身份验证 "。
  3. 在"身份验证"页上,选择 "Windows身份验证"。
  4. 在"操作"窗格中,单击"高级设置"。
  5. 当"高级设置" 对话框出现时 ,从" 扩展保护"下拉菜单 中选择" 关闭"。

对于活动客户端

若要为活动客户端禁用身份验证扩展保护,请对主 AD FS 服务器执行以下过程:

  1. 打开 Windows PowerShell。

  2. 运行以下命令以加载Windows PowerShell AD FS 管理单元的组:

    Add-PsSnapIn Microsoft.Adfs.Powershell
    
  3. 运行以下命令以禁用身份验证扩展保护:

    Set-ADFSProperties –ExtendedProtectionTokenCheck "None"
    

重新启用身份验证扩展保护

对于被动客户端

若要为被动客户端重新启用身份验证扩展保护,请对 AD FS 联合服务器场中所有服务器上以下 IIS 虚拟应用程序执行以下过程:

  • 默认网站/adfs
  • 默认网站/adfs/ls

为此,请按照下列步骤操作:

  1. 打开 IIS 管理器并导航到要管理的级别。 有关打开 IIS 管理器的信息,请参阅 Open IIS Manager (IIS 7)
  2. 在"功能视图"中,双击"身份验证 "。
  3. 在"身份验证"页上,选择 "Windows身份验证"。
  4. 在"操作"窗格中,单击"高级设置"。
  5. 当显示 "设置" 对话框时 ,从" 扩展保护"下拉菜单中选择 "接受"。

对于活动客户端

若要为活动客户端重新启用身份验证扩展保护,请对主 AD FS 服务器执行以下过程:

  1. 打开 Windows PowerShell。

  2. 运行以下命令以加载Windows PowerShell AD FS 管理单元的组:

    Add-PsSnapIn Microsoft.Adfs.Powershell
    
  3. 运行以下命令以启用身份验证扩展保护:

    Set-ADFSProperties –ExtendedProtectionTokenCheck "Allow"
    

解决方案 4:将 CNAME 记录替换为 AD FS 记录

使用 DNS 管理工具将用于联合身份验证服务的每个 DNS 别名 (CNAME) 记录替换为 A (A) 记录。 此外,实施拆分式 DNS 配置时,检查或考虑公司 DNS 设置。 若要详细了解如何管理 DNS 记录,请参阅 管理 DNS 记录

解决方案 5:Internet Explorer SSO 客户端设置单一登录 (AD FS)

若要详细了解如何为 AD FS Internet Explorer设置密码,请参阅联合用户意外提示输入工作 或学校帐户凭据

详细信息

为了帮助保护网络,AD FS 使用身份验证扩展保护。 身份验证扩展保护有助于防止中间人攻击,攻击者会截获客户端的凭据,然后将它们转发到服务器。 通过使用 CBT 中的通道绑定工作程序,可以 (此类) 。 与客户端建立通信时,服务器可以要求、允许或不需要 CBT。

ExtendedProtectionTokenCheck AD FS 设置指定联合服务器支持的身份验证扩展保护级别。 以下为此设置的可用值:

  • 要求:服务器已完全强化。 强制执行扩展保护。
  • 允许:这是默认设置。 服务器部分经过强化。 为支持此功能而更改的涉及的系统强制执行扩展保护。
  • :服务器易受攻击。 不强制执行扩展保护。

下表介绍了身份验证如何针对三个操作系统和浏览器运行,具体取决于在带 IIS 的 AD FS 上可用的不同扩展保护选项。

备注

Windows客户端操作系统必须安装特定更新才能有效使用扩展保护功能。 默认情况下,这些功能在 AD FS 中启用。

默认情况下,Windows 7 包含使用扩展保护的适当二进制文件。

Windows 7 (Vista 或 WINDOWS XP Windows或适当更新的版本)

Setting 需要 允许 (默认)
Windows Communication Foundation (WCF) 客户端 (所有) Works Works Works
Internet Explorer 8及更高版本 Works Works Works
Firefox 3.6 失败 失败 Works
Safari 4.0.4 失败 失败 Works

Windows Vista 而不进行适当更新

Setting 需要 允许 (默认)
WCF 客户端 (所有终结点) 失败 Works Works
Internet Explorer 8及更高版本 Works Works Works
Firefox 3.6 失败 Works Works
Safari 4.0.4 失败 Works Works

Windows更新的情况下安装 XP

Setting 需要 允许 (默认)
Internet Explorer 8及更高版本 Works Works Works
Firefox 3.6 失败 Works Works
Safari 4.0.4 失败 Works Works

有关身份验证扩展保护详细信息,请参阅以下 Microsoft 资源:

为 AD FS 2.0 配置高级选项

有关此 cmdlet Set-ADFSProperties,请转到以下 Microsoft 网站:

Set-ADFSProperties

仍然需要帮助? 转到 Microsoft 社区Azure Active Directory 论坛网站。

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。