使用事件和記錄,針對 Active Directory 同盟服務進行疑難排解

Active Directory 同盟服務 (AD FS) 提供兩個主要記錄,您可以用來進行疑難排解。 其中包括:

  • 系統管理員記錄。
  • Tracelog。

檢視系統管理員記錄

系統管理員記錄會提供有關所發生問題的高階資訊,且預設為啟用。 若要檢視系統管理員記錄:

  1. 開啟 [事件檢視器]

  2. 展開 [應用程式和服務記錄]

  3. 展開 AD FS

  4. 選取管理

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

使用 Tracelog

Tracelog 是記錄詳細訊息的位置,也是疑難排解時最有用的記錄。 由於可以在短時間內產生許多 Tracelog 資訊,這可能會影響系統效能,因此預設會停用記錄。

啟用和檢視 Tracelog

  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 已啟用基本層級的稽核。 透過基本稽核,系統管理員會看到單一要求的五個或更少事件。 這項資訊標示著系統管理員為了查看單一要求而必須查看的事件數目大幅減少。 您可以使用 PowerShell Cmdlet 來提升或降低稽核層級:

Set-AdfsProperties -AuditLevel

下表說明可用的稽核層級。

稽核層級 PowerShell 語法 描述
None Set-AdfsProperties -AuditLevel None 已停用稽核,且不會記錄任何事件。
基本 (預設值) Set-AdfsProperties -AuditLevel Basic 不會針對單一要求記錄超過五個事件。
詳細資訊 Set-AdfsProperties -AuditLevel Verbose 記錄所有事件。 此層級會記錄每個要求的大量資訊。

若要檢視目前的稽核層級,您可以使用 PowerShell Cmdlet:Get-AdfsProperties

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

您可以使用 PowerShell Cmdlet 來提升或降低稽核層級:Set-AdfsProperties -AuditLevel

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

事件類型

根據 AD FS 處理的不同要求類型,AD FS 事件可以是不同類型。 每個類型的事件都有與其相關聯的特定資料。 事件類型可以區分登入要求與系統要求。 您的登入要求可能是權杖要求,而您的系統要求可能是伺服器呼叫,包括擷取設定資訊。

下表描述事件的基本類型。

事件類型 事件識別碼 描述
全新認證驗證成功 1202 同盟服務成功驗證全新認證的要求。 此事件包括 WS-Trust、WS-同盟、SAML-P (產生 SSO 的第一站) 和 OAuth 授權端點。
全新認證驗證錯誤 1203 同盟服務上全新認證驗證失敗的要求。 此事件包括 WS-Trust、WS-Fed、SAML-P (產生 SSO 的第一站) 和 OAuth 授權端點。
應用程式權杖成功 1200 同盟服務成功發出安全性權杖的要求。 針對 WS-同盟和 SAML-P,此事件會在使用 SSO 成品 (例如 SSO Cookie) 處理要求時加以記錄。
應用程式權杖失敗 1201 同盟服務上安全性權杖發行失敗的要求。 針對 WS-同盟和 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. 選取 [確定]。

    Screenshot of the Events tab of the Federation Service Properties dialog box showing that 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 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 會將記錄到事件檢視器的所有事件相互關聯,而這些事件位於系統管理員和偵錯記錄中。 其中每筆記錄都會藉由使用獨有的全域唯一識別碼 (GUID) (稱為活動識別碼) 對應至特定要求。 針對使用被動要求者設定檔的應用程式,將權杖發行要求遞交至 Web 應用程式時,AD FS 會產生此識別碼。 針對使用 WS-Trust 的應用程式,將要求直接傳送至宣告提供者時,AD FS 會產生識別碼。

Screenshot of the Details tab of the event Properties dialog box with the ActivityID value called out.

此活動識別碼會在要求的整個持續時間內維持不變,而且其會記錄為事件檢視器中針對該要求所記錄的每個事件一部分。 這表示:

  • 使用此活動識別碼篩選或搜尋事件檢視器,可以協助追蹤對應至權杖要求的所有相關事件。
  • 跨不同的機器記錄相同的活動識別碼,這可讓您跨多個機器 (例如同盟伺服器 Proxy (FSP)) 針對使用者要求進行疑難排解。
  • 如果 AD FS 要求以任何方式失敗,活動識別碼也會出現在使用者的瀏覽器中,從而可讓使用者將此識別碼傳達給技術支援人員或 IT 支援人員。

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

為了協助疑難排解流程,每當 AD FS 伺服器上的權杖發行流程失敗,AD FS 也會記錄呼叫者識別碼事件。 此事件包含下列其中一個宣告類型的宣告類型和值,假設這項資訊做為權杖要求的一部分傳遞至同盟服務:

  • 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

呼叫者識別碼事件也會記錄活動識別碼,讓您可以使用該活動識別碼,來篩選或搜尋特定要求的事件記錄。

後續步驟