本文提供了在尝试访问使用 AD FS 2.0 的网站上的应用程序时出错的解决方案。
原始 KB 数: 3044971
总结
大多数 Active Directory 联合服务 (AD FS) 2.0 问题属于以下主要类别之一。 本文包含排查连接问题的分步说明。
- ADFS 2.0 服务无法启动(KB 3044971)
- ADFS 服务问题(KB 3044973)
- 证书问题(KB 3044974)
- 身份验证问题(KB 3044976)
- 声明规则问题(KB 3044977)
现象
症状 1
尝试访问使用 Active Directory 联合身份验证服务 (AD FS) 2.0 的网站上的 Web 应用程序时,会收到以下错误消息:
无法显示此页面。
症状 2
无法访问以下 IDP 发起的登录页和 AD FS 元数据:
https://ADFSServiceName/federationmetadata/2007-06/federationmetadata.xml
https://ADFSServiceName/adfs/ls/idpinitiatedsignon.aspx
解决方法
若要解决此问题,请按顺序执行以下步骤。 这些步骤将帮助你确定问题的原因。 确保检查每个步骤后是否解决问题。
步骤 1:检查客户端是否已重定向到正确的 AD FS URL
如何检查
- 启动 Internet Explorer。
- 按 F12 打开开发人员工具窗口。
- 在 “网络 ”选项卡上,选择 “开始 ”按钮或按 “开始捕获 ”以启用网络流量捕获。
- 浏览到 Web 应用程序的 URL。
- 检查网络跟踪,查看客户端是否已重定向到 AD FS 服务的 URL 进行身份验证。 请确保 AD FS 服务 URL 正确。
在以下屏幕截图中,第一个 URL 用于 Web 应用程序,第二个 URL 用于 AD FS 服务。
修复方法
如果重定向到不正确的地址,则可能在 Web 应用程序中具有不正确的 AD FS 联合设置。 检查这些设置,确保 AD FS 联合身份验证服务(SAML 服务提供商)URL 正确。
步骤 2:检查是否可以将 AD FS 服务名称解析为正确的 IP 地址
如何检查
在客户端计算机和 AD FS 代理服务器(如果已这样做),使用 ping 或 nslookup 命令来确定 AD FS 服务名称是否解析为正确的 IP 地址。 遵循以下指南:
Intranet:名称应解析为内部 AD FS 服务器 IP 或 AD FS 服务器(内部)的负载均衡 IP。
外部:名称应解析为 AD FS 服务的外部/公共 IP。 在这种情况下,公共 DNS 用于解析名称。 如果发现不同公共 IP 是从同一 AD FS 服务名称的不同计算机返回的,则公共 DNS 中的最近更改可能尚未在全球所有公共 DNS 服务器中传播。 此类更改可能需要长达 24 小时才能复制。
重要
在所有 AD FS 服务器上,请确保 AD FS 代理服务器可以将 AD FS 服务的名称解析为内部 AD FS 服务器 IP 或内部 AD FS 服务器的负载均衡 IP。 执行此操作的最佳方式是在 AD FS 代理服务器上的 HOST 文件中添加条目,或使用外围网络(也称为“外围网络”、“非军事区域”和“屏蔽子网”)中的拆分 DNS 配置。
nslookup 命令的示例:
Nslookup sts.contoso.com
修复方法
通过 DNS 服务器或 Internet 服务提供商(ISP)检查 AD FS 服务名称的记录。 确保 IP 地址正确。
步骤 3:检查是否可以访问 AD FS 服务器上的 TCP 端口 443
如何检查
使用 Telnet 或 PortQryUI - PortQry 命令行端口扫描程序的 用户界面查询 AD FS 服务器上的端口 443 的连接。 确保 443 端口正在侦听。
修复方法
如果 AD FS 服务器未侦听 443 端口,请执行以下步骤:
- 确保已启动 AD FS 2.0 Windows 服务。
- 检查 AD FS 服务器上的 Windows 防火墙设置,确保允许 TCP 433 端口建立连接。
- 如果在 AD FS 服务之前使用负载均衡器,请尝试绕过负载均衡过程来验证这是否不是问题的原因。 (负载均衡是一个常见原因。
步骤 4:检查是否可以使用 IdP 发起的登录页向 ADFS 进行身份验证
如何检查
启动 Internet Explorer,然后浏览到以下 Web 地址。 如果在尝试打开此页面时收到证书警告,请选择“ 继续”。
<http:// YourADFSServiceName>/adfs/ls/idpinitiatedsignon.aspx
注意
在此 URL 中, <YourADFSServiceName> 表示实际的 AD FS 服务名称。
通常,访问登录屏幕,然后使用凭据登录。
修复方法
如果能够成功执行步骤 1 到步骤 3,但仍无法访问 Web 应用程序,请执行以下步骤:
- 使用另一台客户端计算机和浏览器执行测试。 可能存在影响客户端的问题。
- 执行以下高级故障排除步骤:
- 访问页面时
IDPInitiatedsignon
收集 Fiddler Web 调试器跟踪和网络捕获信息。 有关详细信息,请参阅 AD FS 2.0:如何使用 Fiddler Web 调试器分析 WS 联合被动登录。 - 从客户端计算机收集网络跟踪,以检查 SSL 握手是否已成功完成、是否存在加密消息、是否访问正确的 IP 地址等。 有关详细信息,请参阅 如何在 Windows 和 Windows Server 中启用 Schannel 事件日志记录。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。