使用事件和日志记录对 Active Directory 联合身份验证服务进行故障排除

Active Directory 联合身份验证服务(AD FS)提供两个主要日志,可用于进行故障排除。 它们分别是:

  • 管理员日志。
  • 跟踪日志。

查看管理员日志

管理日志默认启用,提供有关当前发生问题的高级信息。 若要查看管理员日志,请执行以下作:

  1. 打开事件查看器

  2. 展开 应用程序和服务日志

  3. 展开“AD FS”。

  4. 选择 “管理员”。

    “事件查看器”的屏幕截图,其中已调出“管理员”选项。

使用 Tracelog

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

启用和查看 Tracelog

  1. 打开 事件查看器 并展开 应用程序和服务日志

  2. 右键单击 “应用程序和服务日志”,然后选择“ 视图”。 然后选择“ 显示分析和调试日志”。 此窗格显示更多节点。

    事件查看器的屏幕截图,显示用户右键单击“应用程序和服务日志”,并选择“视图”选项,其中包含“显示分析和调试日志”功能。

  3. 展开“AD FS 跟踪”。

  4. 右键单击 “调试”,然后选择“ 启用日志”。

    事件查看器的屏幕截图,其中显示用户右键单击了“调试”,并突出显示了“启用日志”选项。

Windows Server 2016 上 AD FS 的事件审核信息

默认情况下,Windows Server 2016 中的 AD FS 已启用基本级别的审核。 在基本审核级别下,对于单个请求,管理员最多可看到五个事件。 此信息标志着,管理员为了查看单个请求,需要查看的事件数量显著减少。 可以使用 PowerShell cmdlet 提高或降低审核级别:

Set-AdfsProperties -AuditLevel

下表说明了可用的审核级别。

审核级别 PowerShell 语法 DESCRIPTION
没有 Set-AdfsProperties -AuditLevel 无 审核已禁用,不会记录任何事件。
基本 (默认) Set-AdfsProperties -AuditLevel Basic 对于单个请求,不会记录超过五个事件。
详细 Set-AdfsProperties -AuditLevel Verbose 记录所有事件。 此级别记录每个请求的大量信息。

若要查看当前的审核级别,可以使用 PowerShell cmdlet: Get-AdfsProperties

PowerShell 窗口的屏幕截图,其中显示了 Get-AdfsProperties cmdlet 的结果,其中已调用“审核级别”属性。

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

PowerShell 窗口的屏幕截图,其中显示了命令提示符中键入的 Set-AdfsProperties -AuditLevel Verbose cmdlet。

事件类型

AD FS 事件可以是不同类型的,具体取决于 AD FS 处理的不同类型的请求。 每种类型的事件都有与之关联的特定数据。 事件类型可以区分登录请求和系统请求。 登录请求可能是令牌请求,系统请求可能是服务器-服务器调用,包括提取配置信息。

下表介绍了事件的基本类型。

事件类型 事件编号 DESCRIPTION
新凭据验证成功 1202 联合身份验证服务成功验证新凭据的请求。 此事件包括 WS-Trust、WS 联合身份验证、SAML-P(生成 SSO 的第一阶段)和 OAuth 授权终结点。
新凭据验证错误 1203 一个请求,其中的联合身份验证服务验证新凭据失败。 此事件包括 WS-Trust、WS-Fed、SAML-P(生成 SSO 的第一回合)和 OAuth 授权终结点。
应用程序令牌成功 1200 联合身份验证服务成功发出安全令牌的请求。 对于 WS-Federation 和 SAML-P,使用 SSO 项目(如 SSO Cookie)处理请求时,将记录此事件。
应用程序令牌失败 1201 联合身份验证服务发出安全令牌失败的请求。 对于 WS-Federation 和 SAML-P,当使用 SSO 项目(如 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 管理管理单元。

  6. 若要打开 AD FS 管理单元,请选择“启动”。 转到 “程序>管理工具”,然后选择 “AD FS 管理”。

  7. 在“操作”窗格中,选择“编辑联合身份验证服务属性” 。

  8. 在“联合身份验证服务属性”对话框中,选择“事件”选项卡 。

  9. 选中“成功审核”“失败审核”复选框。

  10. 选择“确定”

    “联合身份验证服务属性”对话框“事件”选项卡的屏幕截图,其中选择了“成功审核”和“失败审核”选项。

注释

仅当 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 根%>\Windows\ADFS ,并且采用 XML 格式。 以下示例显示了文件的相关部分:

<!-- To enable WIF tracing, change the following switchValue to the desired trace level - Verbose, Information, Warning, Error, Critical -->

<source name="Microsoft.IdentityModel" switchValue="Off"> … </source>

<!-- To enable WCF tracing, change the following switchValue to the desired trace level - Verbose, Information, Warning, Error, Critical -->

<source name="System.ServiceModel" switchValue="Off" > … </source>

应用这些更改后,保存配置并重启 AD FS 服务。 通过设置相应的开关启用这些跟踪后,它们将显示在 Windows 事件查看器中的 AD FS Tracelog 中。

关联事件

最难解决的问题之一是访问问题,这些问题会生成大量错误或调试事件。

为了实现这一点,AD FS 会将记录的所有事件关联到事件查看器中,包括在管理员日志和调试日志中。 其中每个日志都通过使用称为活动 ID 的唯一全局唯一标识符 (GUID) 对应于特定的请求。 AD FS 在使用被动请求者配置文件向 Web 应用程序提供令牌发出请求时生成此 ID。 AD FS 还会在向使用 WS-Trust 的应用程序的声明提供程序直接发送请求时生成 ID。

“事件属性”对话框的“详细信息”选项卡的屏幕截图,其中已调用 ActivityID 值。

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

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

“事件属性”对话框的“详细信息”选项卡的屏幕截图,其中调用了客户端请求 ID 值。

为了帮助解决故障排除过程,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 筛选或搜索特定请求的事件日志。

后续步骤