AD FS 故障排除 - 事件和日志记录
AD FS 提供两个主要日志,可用于故障排除。 它们分别是:
- 管理员日志
- 跟踪日志
下面将介绍其中每个日志。
管理员日志
管理日志提供有关发生且默认启用的问题的高级信息。
查看管理员日志
- 打开事件查看器
- 展开 应用程序和服务日志。
- 展开 AD FS。
- 单击“管理”。

跟踪日志
跟踪日志是记录详细消息的位置,在故障排除时将是最有用的日志。 由于可以在短时间内生成大量跟踪日志信息,这可能会影响系统性能,因此默认情况下会禁用跟踪日志。
启用和查看跟踪日志
- 打开事件查看器
- 右键单击 “应用程序和服务日志 ”,然后选择“查看”,然后单击“ 显示分析和调试日志”。 这会在左侧显示其他节点。

- 展开 AD FS 跟踪
- 右键单击“调试”并选择“ 启用日志”。

Windows Server 2016 上 AD FS 的事件审核信息
默认情况下,Windows Server 2016中的 AD FS 已启用基本级别的审核。 通过基本审核,管理员会看到单个请求的 5 个或更少事件。 这标志着管理员必须查看的事件数显著减少,以便查看单个请求。 可以使用 PowerShell cmdlt 提高或降低审核级别:
Set-AdfsProperties -AuditLevel
下表说明了可用的审核级别。
| 审核级别 | PowerShell 语法 | 说明 |
|---|---|---|
| 无 | Set-AdfsProperties -LogLevel None | 审核已禁用,不会记录任何事件。 |
| 基本(默认) | Set-AdfsProperties -LogLevel Basic | 对于单个请求,会最多记录 5 个事件 |
| 详细 | Set-AdfsProperties -LogLevel 详细 | 记录所有事件。 这会记录每个请求的大量数据。 |
若要查看当前的审核级别,可以使用 PowerShell cmdlt:Get-AdfsProperties。

可以使用 PowerShell cmdlt 提高或降低审核级别:Set-AdfsProperties -AuditLevel。

事件类型
AD FS 事件可以是不同类型的,具体取决于 AD FS 处理的不同类型的请求。 每种类型的事件都有与之关联的特定数据。 事件类型可以区分登录请求 (,即令牌请求) 与系统请求 (服务器调用,包括提取配置信息) 。
下表描述了事件的基本类型。
| 事件类型 | 事件 ID | 说明 |
|---|---|---|
| 新的凭据验证成功 | 1202 | 联合身份验证服务成功验证新凭据的请求。 这包括 WS-Trust、WS 联合身份验证、SAML-P (第一回合来生成 SSO) 和 OAuth 授权终结点。 |
| 全新凭据验证错误 | 1203 | 联合身份验证服务上出现新凭据验证失败的请求。 这包括 WS-Trust、WS-Fed、SAML-P (第一回合来生成 SSO) 和 OAuth 授权终结点。 |
| 应用程序令牌成功 | 1200 | 联合身份验证服务成功颁发安全令牌的请求。 对于 WS 联合身份验证,使用 SSO 项目处理请求时,会记录 SAML-P。 (,例如 SSO cookie) 。 |
| 应用程序令牌失败 | 1201 | 在联合身份验证服务上,安全令牌颁发失败的请求。 对于 WS 联合身份验证,使用 SSO 项目处理请求时会记录 SAML-P。 (,例如 SSO cookie) 。 |
| 密码更改请求成功 | 1204 | 一个事务,其中密码更改请求已成功由联合身份验证服务处理。 |
| 密码更改请求错误 | 1205 | 一个事务,其中密码更改请求未能由联合身份验证服务处理。 |
| 注销成功 | 1206 | 描述成功的注销请求。 |
| 注销失败 | 1207 | 描述失败的注销请求。 |
安全审核
AD FS 服务帐户的安全审核有时有助于跟踪密码更新、请求/响应日志记录、请求连接标头和设备注册结果的问题。 默认情况下禁用对 AD FS 服务帐户的审核。
启用安全审核
- 单击“开始”,指向 “程序”,指向 “管理工具”,然后单击“ 本地安全策略”。
- 导航到“安全设置\本地策略\用户权限管理”文件夹,然后双击“生成安全审核”。
- 在“本地安全设置”选项卡上,验证是否列出了 AD FS 服务帐户。 如果该服务帐户不存在,请单击“添加用户或组”并将其添加到列表中,然后单击“确定”。
- 使用提升的权限打开命令提示符,并运行以下命令以启用审核auditpol.exe /set /subcategory:“Application Generated” /failure:enable /success:enable
- 关闭“本地安全策略”,然后打开“AD FS 管理”管理单元。
若要打开 AD FS 管理管理单元,请单击“开始”,指向“程序”,指向“管理工具”,然后单击“AD FS 管理”。
- 在“操作”窗格中,单击“编辑联合身份验证服务属性”
- 在“联合身份验证服务属性”对话框中,单击“事件”选项卡。
- 选中“成功审核”和“失败审核”复选框。
- 单击“确定”。

注意
仅当 AD FS 位于独立成员服务器上时,才使用上述说明。 如果 AD FS 在域控制器上运行,而不是本地安全策略,请使用位于组策略管理/林/域/域控制器的默认域控制器策略。 单击“编辑”并导航到“计算机配置\策略\Windows 设置\安全设置\本地策略\用户权限管理
Windows Communication Foundation 和 Windows Identity Foundation 消息
除了跟踪日志记录之外,有时可能需要查看 Windows Communication Foundation (WCF) 和Windows Identity Foundation (WIF) 消息,以便解决问题。 这可以通过修改 AD FS 服务器上的 Microsoft.IdentityServer.ServiceHost.Exe.Config 文件来完成。
此文件位于 <%system root%>\Windows\ADFS 中,并且采用 XML 格式。 文件的相关部分如下所示:
<!-- To enable WIF tracing, change the switchValue below to desired trace level - Verbose, Information, Warning, Error, Critical -->
<source name="Microsoft.IdentityModel" switchValue="Off"> … </source>
<!-- To enable WCF tracing, change the switchValue below to desired trace level - Verbose, Information, Warning, Error, Critical -->
<source name="System.ServiceModel" switchValue="Off" > … </source>
应用这些更改后,保存配置并重启 AD FS 服务。 通过设置适当的开关启用这些跟踪后,它们将显示在Windows 事件查看器的 AD FS 跟踪日志中。
关联事件
要解决的最困难之一是访问问题,这些问题会生成大量错误或调试事件。
为帮助解决此问题,AD FS 会将记录到事件查看器的所有事件关联在管理员和调试日志中,这些事件通过使用唯一的全局唯一标识符 (GUID) 调用活动 ID 来对应于特定请求。 当令牌颁发请求最初提供给 Web 应用程序时,会生成此 ID, (使用被动请求程序配置文件的应用程序) 或直接发送到声明提供程序的请求, (使用 WS-Trust) 的应用程序。

此活动 ID 在请求的整个持续时间内保持不变,并记录为该请求事件查看器中记录的每个事件的一部分。 这意味着:
- 使用此活动 ID 筛选或搜索事件查看器有助于跟踪与令牌请求对应的所有相关事件
- 在同一活动 ID 跨不同计算机记录,这样就可以对多个计算机(例如联合服务器代理 (FSP) )的用户请求进行故障排除
- 如果 AD FS 请求以任何方式失败,活动 ID 也会显示在用户的浏览器中,从而允许用户将此 ID 传达给技术支持或 IT 支持部门。

为了帮助进行故障排除过程,AD FS 还会在 AD FS 服务器上令牌颁发过程失败时记录调用方 ID 事件。 此事件包含以下声明类型的声明类型和值之一,前提是此信息作为令牌请求的一部分传递给联合身份验证服务:
https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountnamehhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifierhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnhhttps://schemas.microsoft.com/ws/2008/06/identity/claims/upnhttp://schemas.xmlsoap.org/claims/UPNhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddresshhttps://schemas.microsoft.com/ws/2008/06/identity/claims/emailaddresshttp://schemas.xmlsoap.org/claims/EmailAddresshttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/namehttps://schemas.microsoft.com/ws/2008/06/identity/claims/namehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier
调用方 ID 事件还会记录活动 ID,以允许使用该活动 ID 筛选或搜索特定请求的事件日志。