有关 AD FS 的常见问题解答 (FAQ)

本文提供有关 Active Directory 联合身份验证服务 (AD FS) 的常见问题的解答。 它根据问题的类型被分成几个部分。

部署

如何从 AD FS 的早期版本进行升级/迁移?

可按照以下任意一篇链接文章中的步骤升级/迁移 AD FS:

如果需要从 AD FS 2.0 或 2.1(Windows Server 2008 R2 或 Windows Server 2012)进行升级,请使用 C:\Windows\ADFS 处的内部脚本。

为什么安装 AD FS 需要重启服务器?

Windows Server 2016 中添加了 HTTP/2 支持,但 HTTP/2 不能用于客户端证书身份验证。 许多 AD FS 方案都使用客户端证书身份验证。 而许多客户端不支持使用 HTTP/1.1 重试请求。 因此,AD FS 场配置会将本地服务器的 HTTP 设置重新配置为 HTTP/1.1。 重新配置此设置需要重启服务器。

是否可以在不升级后端 AD FS 场的情况下使用 Windows Server 2016 Web 应用程序代理服务器将 AD FS 场发布到 Internet?

支持此配置,但此配置不支持新的 AD FS 2016 功能。 只应在从 AD FS 2012 R2 迁移到 AD FS 2016 的过程中临时使用此配置。 不应长时间使用此配置。

是否可以在不将代理发布到 Office 365 的情况下为 Office 365 部署 AD FS?

可以,但仅作为副作用:

AD FS 和 Web 应用程序代理服务器的负载均衡要求有哪些?

AD FS 是无状态系统,因此负载均衡对于登录而言非常简单。下面是针对负载均衡系统的一些关键建议:

  • 不应为负载均衡器配置 IP 相关性。 在某些 Exchange Online 方案中,IP 相关性可能会使一些服务器上的负载过多。
  • 负载均衡器不得终止 HTTPS 连接并启动与 AD FS 服务器建立的新连接。
  • 负载均衡器应确保连接的 IP 地址在发送到 AD FS 时应转换为 HTTP 数据包中的源 IP。 如果负载均衡器无法发送 HTTP 数据包中的源 IP,则负载均衡器必须向 X-Forwarded-For 标头添加该 IP 地址。 必须执行此步骤才能正确处理某些与 IP 相关的功能(如禁止 IP 和 Extranet 智能锁定)。 如果未正确实现此配置,则可能会降低安全性。
  • 负载均衡器应支持 SNI。 否则,请确保配置 AD FS,使其创建 HTTPS 绑定来处理不支持 SNI 的客户端。
  • 负载均衡器应使用 AD FS HTTP 运行状况探测终结点来检测 AD FS 或 Web 应用程序代理服务器是否正在运行。 如果未返回 200 正常,则应排除它们。

AD FS 支持哪些多林配置?

AD FS 支持多个多林配置。 它依赖基础 AD DS 信任网络以在多个受信任领域上对用户进行身份验证。 我们强烈建议使用双向林信任,因为它们的设置更简单,有助于确保信任系统正常运行。

此外:

  • 如果有单向林信任(例如包含合作伙伴标识的外围网络[也称为 DMZ] 林),则建议你在企业林中部署 AD FS。 将外围网络林视为通过 LDAP 连接的另一个本地声明提供程序信任。 在这种情况下,Windows 集成身份验证对外围网络林用户将不起作用。 它们需要使用密码身份验证,因为LDAP 仅支持这种机制。

    如果无法使用此选项,则需要在外围网络林中设置另一个 AD FS 服务器。 将其添加为公司林中 AD FS 服务器中的声明提供程序信任。 用户将需要进行主页领域发现,但 Windows 集成身份验证和密码身份验证都将运行。 在外围网络林中的 AD FS 中对颁发规则进行适当的更改,因为公司林中的 AD FS 无法从外围网络林中获取有关用户的更多信息。

  • 域级别信任受支持,并且可以运行。 但强烈建议移动到林级别信任模型。 还需确保 UPN 路由和 NetBIOS 名称解析能够正常运行。

注意

如果将选择性身份验证与双向信任配置一起使用,请确保为调用方用户授予目标服务帐户的“允许身份验证”权限。

AD FS Extranet 智能锁定是否支持 IPv6?

支持,会对熟悉和未知的位置考虑 IPv6 地址。

设计

哪些第三方多重身份验证提供程序可用于 AD FS?

AD FS 为第三方多重身份验证提供程序提供了可扩展的集成机制。 没有适用于此的固定证书计划。 假设供应商已在发布前执行了必要的验证。

已通知 Microsoft 的供应商列表在此处列出:AD FS 的多重身份验证提供程序。 可能存在我们不知道的可用提供商。 我们将在发现新提供商时更新此列表。

AD FS 是否支持第三方代理?

是的,第三方代理可以放在 AD FS 的前面,但任何第三方代理都必须支持用于替代 Web 应用程序代理的 MS-ADFSPIP 协议

目前,我们已了解以下第三方提供商。 可能存在我们不知道的可用提供商。 我们将在发现新提供商时更新此列表。

AD FS 2016 的容量规划大小调整电子表格位于何处?

可在此处下载 AD FS 2016 版电子表格。 还可使用此电子表格处理 Windows Server 2012 R2 中的 AD FS。

如何确保 AD FS 和 Web 应用程序代理服务器支持 Apple 的 ATP 要求?

Apple 已发布了一组名为“应用传输安全性 (ATS)”的要求,该要求可能会影响对 AD FS 进行身份验证的 iOS 应用的调用。 可通过确保 AD FS 和 Web 应用程序代理服务器支持使用 ATS 进行连接的要求来确保其符合要求。 具体而言,你应确保:

  • AD FS 和 Web 应用程序代理服务器支持 TLS 1.2。
  • TLS 连接的协商密码套件将支持完全向前保密。

有关启用和禁用 SSL 2.0 和 3.0 以及 TLS 1.0、1.1 和 1.2 的详细信息,请参阅管理 AD FS 中的 SSL 协议

若要确保 AD FS 和 Web 应用程序代理服务器仅协商支持 ATP 的 TLS 密码套件,可以禁用不属于 ATP 兼容密码套件列表中的所有密码套件。 若要禁用它们,请使用 Windows TLS PowerShell cmdlet

开发人员

通过 Active Directory 验证的用户使用 AD FS 生成 id_token 时,如何在 id_token 中生成“sub”声明?

“sub”声明的值是客户端 ID 和定位声明值的哈希。

用户通过 WS-Fed/SAML-P 经远程声明提供程序信任登录时,刷新令牌和访问令牌的生存期是多长?

刷新令牌的生存期将是 AD FS 从远程声明提供程序信任中获得的令牌的生存期。 访问令牌的生存期将是为信赖方颁发访问令牌的信赖方令牌生存期。

除了 OpenId 作用域,我还需要返回 profile 和 email 作用域。 是否可通过使用作用域获取更多信息? 如何在 AD FS 中执行此操作?

可使用自定义的 id_token 在 id_token 本身中添加相关信息。 有关详细信息,请参阅自定义要在 id_token 中发出的声明

如何在 JWT 令牌中发布 JSON blob?

为此,我们在 AD FS 2016 中添加了特殊的 ValueType (http://www.w3.org/2001/XMLSchema#json) 和转义字符 (\x22)。 若要了解颁发规则以及访问令牌的最终输出,请参阅下面的示例。

示例颁发规则:

=> issue(Type = "array_in_json", ValueType = "http://www.w3.org/2001/XMLSchema#json", Value = "{\x22Items\x22:[{\x22Name\x22:\x22Apple\x22,\x22Price\x22:12.3},{\x22Name\x22:\x22Grape\x22,\x22Price\x22:3.21}],\x22Date\x22:\x2221/11/2010\x22}");

在访问令牌中颁发的声明:

"array_in_json":{"Items":[{"Name":"Apple","Price":12.3},{"Name":"Grape","Price":3.21}],"Date":"21/11/2010"}

是否可以像在 Azure AD 中完成请求一样,将资源值作为作用域值的一部分进行传递?

借助 Windows Server 2019 上的 AD FS,你现在可以传递嵌入在 scope 参数中的资源值。 可以将 scope 参数组织成一个用空格分隔的列表,其中每个条目的结构都作为资源/作用域。

AD FS 是否支持 PKCE 扩展?

Windows Server 2019 中的 AD FS 支持适用于 OAuth 授权代码授予流的代码交换证明密钥 (PKCE)。

AD FS 支持哪些允许的作用域?

受支持:

  • aza。 如果你使用的是代理客户端的 OAuth 2.0 协议扩展,并且 scope 参数包含 aza 作用域,则服务器会发出新的主刷新令牌并将其设置在响应的 refresh_token 字段中。 它还会将 refresh_token_expires_in 字段设置为新的主刷新令牌的生存期(如果强制使用了一个)。
  • OpenId。 允许应用程序请求使用 OpenID Connect 授权协议。
  • logon_cert。 允许应用程序请求登录证书,这些证书可用于以交互方式登录通过身份验证的用户。 AD FS 服务器忽略响应中的 access_token 参数,改为提供 Base64 编码的 CMS 证书链或 CMC 完整 PKI 响应。 有关详细信息,请参阅处理详细信息
  • user_impersonation。 从 AD FS 请求代表访问令牌时需要。 有关如何使用此作用域的详细信息,请参阅结合使用 OAuth 和 AD FS 2016 通过代表 (OBO) 构建多层应用程序

不支持:

  • vpn_cert。 允许应用程序请求 VPN 证书,该证书可用于使用 EAP-TLS 身份验证建立 VPN 连接。 不再支持此作用域。
  • email。 允许应用程序请求登录用户的电子邮件声明。 不再支持此作用域。
  • profile。 允许应用程序请求登录用户的与配置文件相关的声明。 不再支持此作用域。

操作

如何替换 AD FS 的 SSL 证书?

AD FS SSL 证书与 AD FS 管理管理单元中的 AD FS 服务通信证书不同。 若要更改 AD FS SSL 证书,需要使用 PowerShell。 请按照管理 AD FS 和 WAP 2016 中的 SSL 证书中的指南进行操作。

如何启用或禁用 AD FS 的 TLS/SSL 设置?

有关禁用和启用 SSL 协议和密码套件的信息,请参阅管理 AD FS 中的 SSL 协议

代理 SSL 证书是否需要与 AD FS SSL 证书相同?

  • 如果代理用于代理使用 Windows 集成身份验证的 AD FS 请求,则代理 SSL 证书必须与联合服务器 SSL 证书相同。
  • 如果启用了 AD FS 属性“ExtendedProtectionTokenCheck”(AD FS 中的默认设置),则代理 SSL 证书必须与联合服务器 SSL 证书相同。
  • 否则,代理 SSL 证书可以使用与 AD FS SSL 证书不同的密钥, 但必须满足相同的要求

为什么只能在 AD FS 上看到密码登录,而看不到已配置的其他身份验证方法?

应用程序明确要求映射到已配置且已启用的身份验证方法的特定身份验证 URI 时,AD FS 仅在登录屏幕中显示一种身份验证方法。 在 WS 联合身份验证请求中,该方法通过 wauth 参数进行传达。 在 SAML 协议请求中,该方法通过 RequestedAuthnCtxRef 参数进行传达。 只显示请求的身份验证方法。 (例如使用密码登录。)

结合使用 AD FS 和 Azure AD 时,应用程序通常会将 prompt=login 参数发送到 Azure AD。 Azure AD 默认将此参数转换为请求基于新密码的 AD FS 登录。 这是在网络内部的 AD FS 上可能看到密码登录或看不到使用证书登录的选项的最常见原因。 更改 Azure AD 中的联合域设置可轻松解决此问题。

有关详细信息,请参阅 Active Directory 联合身份验证服务 prompt=login 参数支持

如何更改 AD FS 服务帐户?

若要更改 AD FS 服务帐户,请使用 AD FS 工具箱服务帐户 PowerShell 模块。 有关说明,请参阅更改 AD FS 服务帐户

如何配置浏览器以将 Windows 集成身份验证 (WIA) 与 AD FS 结合使用?

能否关闭 BrowserSsoEnabled?

如果你在 AD FS 上没有基于设备的访问控制策略,也没有使用 AD FS 进行 Windows Hello 企业版证书注册,则可以关闭 BrowserSsoEnabled。 BrowserSsoEnabled 允许 AD FS 从包含设备信息的客户端收集主刷新令牌 (PRT)。 如果没有该令牌,AD FS 的设备身份验证将无法在 Windows 10 设备上运行。

AD FS 令牌的有效期有多长?

管理员经常想知道用户在无需输入新凭据的情况下获得单一登录 (SSO) 的时间需要多长,以及管理员如何控制这种行为。 AD FS 单一登录设置中介绍了此行为和控制该行为的配置设置。

下面列出了各种 Cookie 和令牌的默认生存期(以及管理生存期的许多参数):

注册的设备

  • PRT 和 SSO Cookie:最长时间为 90 天,由 PSSOLifeTimeMins 管理。 (如果设备至少每 14 天使用一次,则由 DeviceUsageWindow 控制此时间范围。)

  • Refresh token:根据上述参数计算得出一致的行为。

  • access_token:默认值为 1 小时,具体取决于信赖方。

  • id_token:与访问令牌相同。

未注册的设备

  • SSO Cookie:默认值为 8 小时,由 SSOLifetimeMins 管理。 如果已启用“使我保持登录状态 (KMSI)”,则默认值为 24 小时。 可通过 KMSILifetimeMins 配置此默认值。

  • Refresh token:默认值为 8 小时。 如果启用了 KMSI,则为 24 小时。

  • access_token:默认值为 1 小时,具体取决于信赖方。

  • id_token:与访问令牌相同。

AD FS 是否支持机密客户端的隐式流?

AD FS 不支持机密客户端的隐式流。 仅为令牌终结点启用客户端身份验证,并且 AD FS 不会在没有进行客户端身份验证的情况下颁发访问令牌。 如果机密客户端需要访问令牌并且还要求进行用户身份验证,则需要使用授权代码流。

AD FS 是否支持 HTTP 严格传输安全性 (HSTS)?

HSTS 是一种 Web 安全策略机制, 有助于减少具有 HTTP 和 HTTPS 终结点的服务的协议降级攻击和 Cookie 劫持。 它允许 Web 服务器声明 Web 浏览器(或其他符合要求的用户代理)应仅使用 HTTPS 与其进行交互,而并不通过 HTTP 协议进行交互。

Web 身份验证流量的所有 AD FS 终结点都通过 HTTPS 专门打开。 因此 AD FS 减轻了 HSTS 策略机制造成的威胁。 (根据设计,不会降级到 HTTP,因为 HTTP 中没有侦听器。)AD FS 还通过将所有 cookie 标记为安全标志来防止将 cookie 发送到具有 HTTP 协议端点的另一台服务器。

因此,无需在 AD FS 服务器上使用 HSTS,因为 HSTS 无法降级。 AD FS 服务器满足合规性要求,因为它们无法使用 HTTP,并且所有 Cookie 都标记为安全。

最后,AD FS 2016(具有最新修补程序)和 AD FS 2019 支持发出 HSTS 标头。 若要对此进行配置,请参阅使用 AD FS 自定义 HTTP 安全响应标头

X-MS-Forwarded-Client-IP 不包含客户端 IP, 而包含代理前面的防火墙 IP。 在哪里可以获得客户端 IP?

不建议在 Web 应用程序代理服务器之前执行 SSL 终止。 如果在 Web 应用程序代理服务器之前执行此操作,则 X-MS-Forwarded-Client-IP 将包含 Web 应用程序代理服务器前面的网络设备的 IP。 下面是 AD FS 支持的各种与 IP 相关的声明的简要说明:

  • X-MS-Client-IP。 连接到 STS 的设备的网络 IP。 对于 Extranet 请求,此声明始终包含 Web 应用程序代理服务器的 IP。
  • X-MS-Forwarded-Client-IP。 多值声明,其中包含由 Exchange Online 转发到 AD FS 的任何值。 它还包含连接到 Web 应用程序代理服务器的设备的 IP 地址。
  • Userip。 对于 Extranet 请求,此声明将包含 X-MS-Forwarded-Client-IP 的值。 对于 Intranet 请求,此声明包含的值与 X-MS-Client-IP 的值相同。

在 AD FS 2016(具有最新修补程序)和更高版本中,还支持捕获 X-Forwarded-For 标头。 任何未在第 3 层转发的负载均衡器或网络设备(保留 IP)都应将传入客户端 IP 添加到行业标准 X-Forwarded-For 标头中。

我尝试在 UserInfo 终结点上获取其他声明,但它仅返回使用者。 我如何才能获得更多声明?

AD FS 的 UserInfo 终结点始终返回 OpenID 标准中指定的使用者声明。 AD FS 不提供通过 UserInfo 终结点请求的其他声明。 如果在 ID 令牌中需要更多声明,请参阅在 AD FS 中自定义 ID 令牌

为什么我会看到关于将 AD FS 服务帐户添加到企业密钥管理员组失败的警告?

仅当域中存在具有 FSMO PDC 角色的 Windows Server 2016 域控制器时,才创建此组。 可通过手动创建组来解决此错误。 将服务帐户添加为组的成员后,请执行以下步骤来添加所需的权限:

  1. 打开“Active Directory 用户和计算机” 。
  2. 右键单击左窗格中的域名,然后选择“属性”。
  3. 选择“安全”。 (如果缺少“安全性”选项卡,请从“视图”菜单中打开“高级功能”。)
  4. 选择“高级”,再选择“添加”,然后选择“选择主体”。
  5. 此时将出现“选择用户、计算机、服务帐户或组”对话框。 在“输入要选择的对象名称”框中,键入“密钥管理组”。 选择“确定”。
  6. 在“应用于”框中,选择“子级用户对象”。
  7. 滚动到页面底部,然后选择“全部清除”。
  8. 在“属性”部分中,选择“读取 msDS-KeyCredentialLink”和“写入 msDS-KeyCredentialLink” 。

如果服务器未发送与 SSL 证书链中的所有中间证书,Android 设备的新式验证为何会失败?

对于使用 Android ADAL 库的应用,联合用户可能会遇到 Azure AD 身份验证失败的情况。 应用尝试显示登录页面时,会收到 AuthenticationException。 在 Chrome 浏览器中,AD FS 登录页面可能被视为“不安全”。

对于所有版本和所有设备,Android 都不支持从证书的 authorityInformationAccess 字段中下载其他证书。 此限制也适用于 Chrome 浏览器。 如果未从 AD FS 传递整个证书链,任何缺少中间证书的服务器身份验证证书都将导致此错误。

可通过将 AD FS 和 Web 应用程序代理服务器配置为随 SSL 证书一起发送所需中间证书来解决此问题。

从一台计算机导出 SSL 证书,并将其导入到 AD FS 和 Web 应用程序代理服务器的计算机个人存储中时,请确保导出私钥,并选择“个人信息交换 - PKCS #12”。

此外,请确保选择“包括证书路径中的所有证书(如果可能)”和“导出所有扩展属性”。

在 Windows 服务器上运行 certlm.msc,然后将 *.pfx 导入到计算机的个人证书存储中。 此操作将导致服务器将整个证书链传递到 ADAL 库。

注意

还应更新网络负载均衡器的证书存储,使其包含整个证书链(如果存在)。

AD FS 是否支持 HEAD 请求?

AD FS 不支持 HEAD 请求。 应用程序不应对 AD FS 终结点使用 HEAD 请求。 使用这些请求可能会导致意外或延迟的 HTTP 错误响应。 此外,你可能会在 AD FS 事件日志中看到意外错误事件。

为什么我在使用远程 IdP 登录时看不到刷新令牌?

如果 IdP 颁发的令牌的有效时间少于 1 小时,则不会颁发刷新令牌。 若要确保颁发刷新令牌,请将 IdP 颁发的令牌的有效时间提高到 1 小时以上。

是否可以通过一些方法更改 RP 令牌加密算法?

RP 令牌加密设置为 AES256。 不能将此值更改为任何其他值。

在混合模式场中,尝试使用 Set-AdfsSslCertificate -Thumbprint 设置新的 SSL 证书时出现错误。 如何在混合模式 AD FS 场中更新 SSL 证书?

混合模式 AD FS 场是临时的。 建议在计划期间,要么在升级过程之前滚动更新 SSL 证书,要么在更新 SSL 证书之前完成过程并提高场行为级别。 如果未遵循该建议,请使用以下说明更新 SSL 证书。

在 Web 应用程序代理服务器上,仍可以使用 Set-WebApplicationProxySslCertificate。 在 AD FS 服务器上,需要使用 netsh。 完成以下步骤:

  1. 选择一组 AD FS 2016 服务器进行维护。

  2. 在上一步选择的服务器上,通过 MMC 导入新证书。

  3. 删除现有证书:

    a. netsh http delete sslcert hostnameport=fs.contoso.com:443

    b. netsh http delete sslcert hostnameport=localhost:443

    c. netsh http delete sslcert hostnameport=fs.contoso.com:49443

  4. 添加新证书:

    a. netsh http add sslcert hostnameport=fs.contoso.com:443 certhash=THUMBPRINT appid="{5d89a20c-beab-4389-9447-324788eb944a}" certstorename=My verifyclientcertrevocation=Enable sslctlstorename=AdfsTrustedDevices

    b. netsh http add sslcert hostnameport=localhost:443 certhash=THUMBPRINT appid="{5d89a20c-beab-4389-9447-324788eb944a}" certstorename=My verifyclientcertrevocation=Enable

    c. netsh http add sslcert hostnameport=fs.contoso.com:49443 certhash=THUMBPRINT appid="{5d89a20c-beab-4389-9447-324788eb944a}" certstorename=My verifyclientcertrevocation=Enable clientcertnegotiation=Enable

  5. 在所选的服务器上重启 AD FS 服务。

  6. 删除一组 Web 应用程序代理服务器以进行维护。

  7. 在所选的 Web 应用程序代理服务器上,通过 MMC 导入新证书。

  8. 使用此 cmdlet 在 Web 应用程序代理服务器上设置新证书:

    • Set-WebApplicationProxySslCertificate -Thumbprint " CERTTHUMBPRINT"
  9. 在选定的 Web 应用程序代理服务器上重启服务。

  10. 将所选的 Web 应用程序代理服务和 AD FS 服务器放回到生产环境中。

以相同的方式更新 AD FS 和 Web 应用程序代理服务器的其余部分。

当 Web 应用程序代理 (WAP) 服务器位于 Azure Web 应用程序防火墙之后时,是否支持 AD FS?

AD FS 和 Web 应用程序服务器支持不在终结点上执行 SSL 终止的任何防火墙。 此外,AD FS/Web 应用程序代理 服务器具有内置机制,可以:

  • 帮助防止常见的 Web 攻击,例如跨站点脚本攻击。
  • 执行 AD FS 代理。
  • 满足 MS-ADFSPIP 协议定义的所有要求。

我收到“事件 441: 找到了具有错误令牌绑定密钥的令牌。” 我应该怎么做才能解决此事件?

在 AD FS 2016 中,令牌绑定会自动启用,并引发代理和联合身份验证方案的多个已知问题。 这些问题会导致此事件的发生。 若要解决此事件,请运行以下 PowerShell 命令,以删除令牌绑定支持:

Set-AdfsProperties -IgnoreTokenBinding $true

我已将场从 Windows Server 2016 中的 AD FS 升级到 Windows Server 2019 中的 AD FS。 AD FS 场的场行为级别已升级到 Windows Server 2019,但 Web 应用程序代理配置仍显示为 Windows Server 2016。

升级到 Windows Server 2019 后,Web 应用程序代理的配置版本将继续显示为 Windows Server 2016。 Web 应用程序代理没有适用于 Windows Server 2019 的特定于新版本的功能。 如果 AD FS 上的场行为级别已提高,则 Web 应用程序代理将继续显示为 Windows Server 2016。 此行为是设计使然。

在启用 ESL 之前,是否可以估算 ADFSArtifactStore 的大小?

启用 ESL 后,AD FS 会跟踪 ADFSArtifactStore 数据库中用户的帐户活动和已知位置。 此数据库相对于所跟踪的用户数和已知位置进行缩放。 计划启用 ESL 时,你可以估算 ADFSArtifactStore 数据库的大小,以每 100,000 个用户最多 1GB 的速率增长。

如果 AD FS 场使用 Windows 内部数据库,则数据库文件的默认位置为 C:\Windows\WID\Data。 为防止填充此驱动器,请确保在启用 ESL 之前至少有 5 GB 的可用存储。 除了磁盘存储,还应在启用 ESL 后为 500,000 及以下的用户群体计划总进程内存增加最多 1 GB 的 RAM。

我在 AD FS 2019 上收到事件 ID 570。 如何减轻此事件?

以下是事件的文本:

Active Directory trust enumeration was unable to enumerate one of more domains due to the following error. Enumeration will continue but the Active Directory identifier list may not be correct. Validate that all expected Active Directory identifiers are present by running Get-ADFSDirectoryProperties.

当 AD FS 尝试枚举受信任林链中的所有林并跨所有林连接时,如果林不受信任,就会发生此事件。 例如,如果 AD FS 林 A 和林 B 受信任,并且林 B 和林 C 也受信任, 则 AD FS 将枚举所有这三个林,并尝试查找林 A 和林 C 之间的信任。如果出现故障的林中的用户应通过 AD FS 进行身份验证,请在 AD FS 林和出现故障的林之间建立信任。 如果出现故障的林中的用户不得通过 AD FS 进行身份验证,可忽略此错误。

我收到事件 ID 364。 我应该怎么做才能解决此问题?

以下是事件的文本:

Microsoft.IdentityServer.AuthenticationFailedException: MSIS5015: Authentication of the presented token failed. Token Binding claim in token must match the binding provided by the channel.

在 AD FS 2016 中,令牌绑定会自动启用,并引发代理和联合身份验证方案的多个已知问题。 这些问题会导致此事件的发生。 若要解决此事件,请运行以下 PowerShell 命令,以删除令牌绑定支持:

Set-AdfsProperties -IgnoreTokenBinding $true

我收到事件 ID 543。 如何减轻此事件?

以下是事件的文本:

System.ServiceModel.FaultException: The formatter threw an error while trying to deserialize the message: There was an error while trying to deserialize parameter schemas.microsoft.com/ws/2009/12/identityserver/protocols/policystore:maxBehaviorLevel". The InnerException message was "Invalid enum value 'Win2019' cannot be deserialized into type 'Microsoft.IdentityServer.FarmBehavior'. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.

当以下两种表述都为 true 时,预期会发生此事件:

  • 你有一个混合模式场。
  • AD FS 2019 为主联合服务器提供场最大行为级别信息且未被联合服务器版本 2016 识别出。

AD FS 2019 不断尝试在场中共享 MaxBehaviorLevel 值 Win2019,直到它在两个月后过期,从场中自动删除。 若要避免收到此事件,请使用最新版本将主联合身份验证角色迁移到联合服务器。 请按照将 AD FS 场升级到 Windows Server 2019 场行为级别中的说明进行操作。