AD FS 故障排除 - 事件和日志记录

AD FS 提供两个主要日志,可用于故障排除。 它们分别是:

  • 管理员日志
  • 跟踪日志

下面将介绍其中每个日志。

管理员日志

管理日志提供有关发生且默认启用的问题的高级信息。

查看管理员日志

  1. 打开事件查看器
  2. 展开 应用程序和服务日志
  3. 展开 AD FS
  4. 单击“管理”。

Screenshot of the Event Viewer with the Admin option called out.

跟踪日志

跟踪日志是记录详细消息的位置,在故障排除时将是最有用的日志。 由于可以在短时间内生成大量跟踪日志信息,这可能会影响系统性能,因此默认情况下会禁用跟踪日志。

启用和查看跟踪日志

  1. 打开事件查看器
  2. 右键单击 “应用程序和服务日志 ”,然后选择“查看”,然后单击“ 显示分析和调试日志”。 这会在左侧显示其他节点。 Screenshot of the Event Viewer showing that the user right-clicked Applications and Services Log and selected View with the Show Analytic and Debug Logs option called out.
  3. 展开 AD FS 跟踪
  4. 右键单击“调试”并选择“ 启用日志”。 Screenshot of the Event Viewer showing that the user right-clicked Debug with the Enable Log option called out.

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。

Screenshot of the PowerShell window showing the results of the Get-AdfsProperties cmdlet with the Audit Level property called out.

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

Screenshot of the PowerShell window showing the Set-AdfsProperties -AuditLevel Verbose cmdlet typed in the command prompt.

事件类型

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 服务帐户的审核。

启用安全审核

  1. 单击“开始”,指向 “程序”,指向 “管理工具”,然后单击“ 本地安全策略”。
  2. 导航到“安全设置\本地策略\用户权限管理”文件夹,然后双击“生成安全审核”
  3. “本地安全设置”选项卡上,验证是否列出了 AD FS 服务帐户。 如果该服务帐户不存在,请单击“添加用户或组”并将其添加到列表中,然后单击“确定”。
  4. 使用提升的权限打开命令提示符,并运行以下命令以启用审核auditpol.exe /set /subcategory:“Application Generated” /failure:enable /success:enable
  5. 关闭“本地安全策略”,然后打开“AD FS 管理”管理单元。

若要打开 AD FS 管理管理单元,请单击“开始”,指向“程序”,指向“管理工具”,然后单击“AD FS 管理”。

  1. 在“操作”窗格中,单击“编辑联合身份验证服务属性”
  2. 在“联合身份验证服务属性”对话框中,单击“事件”选项卡。
  3. 选中“成功审核”“失败审核”复选框。
  4. 单击“确定”。

Screenshot of the Events tab of the Federation Service Properties dialog box showing the Success audits and Failure audits options are selected.

注意

仅当 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) 的应用程序。

Screenshot of the Details tab of the event Properties dialog box with the Active I D value called out.

此活动 ID 在请求的整个持续时间内保持不变,并记录为该请求事件查看器中记录的每个事件的一部分。 这意味着:

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

Screenshot of the Details tab of the event Properties dialog box with the client request I D value called out.

为了帮助进行故障排除过程,AD FS 还会在 AD FS 服务器上令牌颁发过程失败时记录调用方 ID 事件。 此事件包含以下声明类型的声明类型和值之一,前提是此信息作为令牌请求的一部分传递给联合身份验证服务:

  • https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountnameh
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnh
  • https://schemas.microsoft.com/ws/2008/06/identity/claims/upn
  • http://schemas.xmlsoap.org/claims/UPN
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressh
  • https://schemas.microsoft.com/ws/2008/06/identity/claims/emailaddress
  • http://schemas.xmlsoap.org/claims/EmailAddress
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
  • https://schemas.microsoft.com/ws/2008/06/identity/claims/name
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier

调用方 ID 事件还会记录活动 ID,以允许使用该活动 ID 筛选或搜索特定请求的事件日志。

后续步骤