共用方式為


Kerberos 驗證疑難解答指引

本指南提供在針對 Kerberos 驗證問題進行疑難解答時要遵循的基本概念。

這很重要

本文提供一般指引。 您可能必須調整此處所呈現的程式和範例,才能針對您的特定設定運作。

疑難排解檢查清單

Kerberos 通訊協定依賴數個基礎結構元件和服務。 如果上述任何元件或服務無法使用或無法運作,您可能會遇到驗證問題。

1.檢查事件和記錄

檢查事件記錄檔中是否有問題指示。 使用事件檢視器來檢閱與驗證作業相關的系統上的安全性和系統記錄:

  • 驗證用戶端
  • 目標伺服器或服務
  • 域控制器

特別是,尋找來源中任何可能與 Kerberos 驗證或其依賴的服務相關的事件,例如以下來源:

  • Kerberos
  • 金鑰配送中心 (KDC)
  • LSA (LsaSrv)
  • Netlogon

在目標伺服器上,檢查安全性記錄中是否有失敗稽核。 這類失敗可能會顯示發生驗證失敗時會使用 Kerberos 通訊協定。

某些事件或錯誤表示特定問題。 如果任何受影響的計算機記錄了下列任何事件或錯誤,請選取連結以取得更詳細的疑難解答資訊。

事件或錯誤 疑難解答資訊
事件標識碼 4: 錯誤 KERB_AP_ERR_MODIFIED 用戶端無法解密服務票證。 因為有多個問題可能會導致此錯誤,請檢查相關事件。 例如,此字串可能表示客戶端和目標伺服器時鐘不同步,或SPN不是唯一的。 在多重網域環境中,服務帳戶名稱在樹系(或其他受信任的樹系)中可能不具唯一性。
如需詳細資訊,請參閱 kerberos 用戶端從伺服器收到KRB_AP_ERR_MODIFIED錯誤而 Kerberos 會產生KDC_ERR_S_PRINCIPAL_UNKNOWN或KDC_ERR_PRINCIPAL_NOT_UNIQUE錯誤
事件標識碼 4,錯誤KERB_AP_ERR_SKEW 確定電腦時鐘已同步處理
事件標識碼 14 存取受信任網域中的資源時發生「不支援的 etype」錯誤
事件標識碼 16 或事件標識碼 27 如果停用 Kerberos 的 DES,則會記錄 KDC 事件識別碼 16 或 27
Windows Server 2003 域控制器上的事件標識碼 27 KDC 錯誤
錯誤 1069 服務登入失敗,因為SPN設定錯誤
事件標識碼 5719、錯誤 1311 或錯誤 1355 事件識別碼 5719、錯誤 1311 或錯誤 1355 - 找不到域控制器或網域

如果您確認知道如何修正的問題,請先修正該問題,然後再試一次進行驗證,再繼續。

2.檢查基礎結構

一。 請確定用戶端應用程式和目標服務不在相同的電腦上

根據預設,如果用戶端應用程式和目標服務安裝在單一計算機上,則會停用 Kerberos。 如果您無法在不同的計算機上安裝用戶端應用程式和目標服務,則必須在 Windows 中變更特定的安全性相關設定。 此外,您可能必須變更登錄機碼。 如需此案例相關問題的詳細資訊,以及影響它的特定設定,請參閱 當您嘗試在本機存取伺服器時發生錯誤訊息

如果您進行任何變更,請在繼續之前再試一次進行驗證。

b。 檢查客戶端電腦、目標伺服器和資源伺服器是否已加入適當的網域

如有必要,請將用戶端電腦或目標伺服器加入適當的網域。 然後,再試一次進行驗證。

注意

在此內容中,「適當的網域」是單一樹系或一組具有信任關係之樹系內的網域。

丙. 檢查目標伺服器及其支援服務的健康情況

請確定應用程式或前端服務(例如 Web 服務)和後端服務(例如 SQL Server 服務)正在執行。

注意

您可能會收到類似「服務已產生錯誤 1069:服務因為登入失敗而未啟動」的訊息。如果您收到此訊息,請參閱 服務登入失敗,因為設定SPN不正確

d。 請確定有正確的埠可供使用

檢查客戶端計算機、域控制器和目標伺服器之間的所有防火牆(包括每部計算機上的 Windows 防火牆)。 請確保下列埠允許網路流量。

注意

此清單使用 serverclient 連接埠伺服器埠 格式。

  • DHCP: 67 (UDP),67 (UDP)
  • DNS: 49152 -65535 (TCP, UDP), 53 (TCP, UDP)
  • HTTPS,包括憑證式驗證: 443(TCP)、443 (TCP)
  • Kerberos: 49152 -65535(TCP,UDP),88(TCP,UDP)
  • Kerberos 密碼變更: 49152 -65535 (TCP), 464 (TCP, UDP)
  • LDAP,包括 DC 定位器: 49152 -65535 (TCP, UDP), 389 (TCP, UDP)
  • LDAP SSL: 49152 -65535 (TCP), 636 (TCP)
  • SMB: 49152 -65535(TCP,UDP),445(TCP)
  • RPC 端點對應程式: 49152 -65535 (TCP),135 (TCP)
  • RPC for LSA, SAM, NetLogon: 49152 -65535 (TCP), 49152-65535 (TCP)
  • W32Time: 49152 -65535 (UDP), 123 (UDP)

如果您變更任何防火牆設定,請再試一次進行驗證。

e。 檢查域控制器是否可用

當客戶端嘗試連絡服務或應用程式(稱為「目標伺服器」時,用戶端和目標伺服器都需要域控制器來加速驗證、授權和委派。

在用戶端電腦上,開啟具有管理員權限的命令提示字元視窗,然後執行下列命令:

nltest /dsgetdc:<DomainName> /force /kdc

注意

在此命令中, <DomainName> 代表您要查詢的計算機網域名稱。

此命令 nltest 會擷取可用域控制器的清單(雖然清單可能不包含所有可用的域控制器)。 記錄這些網域控制器的完整域名和 IP 位址,以供後續程序使用。

如果客戶端或目標伺服器無法連絡域控制器,您會收到類似如下的訊息(有時標示為「錯誤 1355」):

指定的網域不存在或連不上。

如果您收到此訊息,請參閱 事件標識碼 5719、錯誤 1311 或錯誤 1355 - 找不到域控制器或網域以取得 更多疑難解答資訊。 否則,請繼續查看此清單。

f。 檢查 DNS 是否在客戶端與目標伺服器之間運作

在用戶端電腦上,開啟系統管理命令提示字元窗口,然後執行下列命令:

nslookup <TargetName>

注意

在此命令中, <TargetName> 代表目標伺服器的 NetBIOS 名稱。

nslookup如果命令正確解析目標伺服器名稱,DNS 組態是正確的。 如果命令未解析目標伺服器名稱,請遵循下列步驟來檢查用戶端電腦的網路適配器組態:

  1. 在用戶端電腦上,執行下列命令:

    ipconfig /all
    
  2. 在命令輸出中,判斷使用中的網路適配器。 檢查下列配接器設定:

    • 用戶端IP位址

    • 子網路遮罩

    • 預設閘道

    • 線上特定 DNS 後綴

    • DNS 伺服器 IP 位址

      記錄IP位址,並記下慣用的 DNS 伺服器,以及次要伺服器。 這項資訊適用於稍後的疑難解答。

    如果上述任何設定不正確,請修正這些設定,或連絡 DNS 系統管理員以取得協助。 如果您進行任何變更,請再次執行 nslookup <TargetName>

如果 DNS 仍然無法正常運作,請遵循下列步驟:

  1. 在用戶端電腦上執行下列命令:

    nslookup <ClientName> <DNSIPAddress>
    

    注意

    在此命令中, <ClientName> 代表用戶端電腦的 NetBIOS 名稱,而 <DNSIPAddress> 代表用戶端設定為使用之 DNS 伺服器的 IP 位址。 首先,使用您在上一個程式中記錄之慣用 DNS 伺服器的 IP 位址。 如果命令無法運作,請使用用戶端次要 DNS 伺服器的 IP 位址再試一次。

    例如,如果用戶端計算機的名稱是 「client1」,而用戶端慣用 DNS 伺服器的 IP 位址是 10.0.0.1,請執行下列命令:

    nslookup client1 10.0.0.1
    
  2. 從目標伺服器執行相同的命令。 現在類似於下列命令:

    nslookup <TargetName> <DNSIPAddress>
    

    注意

    在此命令中, <TargetName> 代表目標伺服器的 NetBIOS 名稱,而 <DNSIPAddress> 代表目標伺服器設定為使用之 DNS 伺服器的 IP 位址。 首先,使用您在上一個程式中記錄之慣用 DNS 伺服器的 IP 位址。 如果命令第一次執行時無法運作,請使用目標伺服器次要 DNS 伺服器的 IP 位址再試一次。

    例如,如果目標伺服器的名稱是 「WebServer1」,而目標伺服器慣用 DNS 伺服器的 IP 位址是 10.0.0.1,請執行下列命令:

    nslookup WebServer1 10.0.0.1
    

    下表摘要說明查詢的 nslookup 可能結果及其影響。

    目標查詢
    成功
    目標查詢
    失敗
    客戶端查詢
    成功
    沒有 DNS 問題 影響目標或至少一部 DNS 伺服器的問題
    客戶端查詢
    失敗
    影響用戶端或至少一部 DNS 伺服器的問題 影響一或多個 DNS 伺服器的問題

如果查詢結果指出您有 DNS 問題,請參閱下列文章以取得更多協助:

如果您解決 DNS 問題,但 Kerberos 問題仍然存在,請嘗試下列疑難解答方法。

g。 請確保電腦時鐘已同步

用戶端電腦或目標伺服器可以快取票證以供日後使用。 不過,每個票證都有時間戳,可決定其存留時間(TTL)。 在域控制器上執行的 Kerberos 金鑰發佈中心服務會設定時間戳。

域控制器與用戶端電腦或目標伺服器之間的時間差異必須少於五分鐘。 一般而言,如果時鐘未同步,Windows 可以自動重新同步它們。 有兩種情況可能需要採取動作:

  • 時鐘不同步超過 48 小時。
  • 未同步的時鐘不會在其網域中使用網域控制器作為時間伺服器,或不使用與這些網域控制器相同的時間伺服器。

若要解決此問題,受影響的電腦必須重新檢查網路的時間伺服器,然後重新同步其時鐘。 若要啟用這些動作,請開啟系統管理命令提示字元視窗,然後執行下列命令:

w32tm /resync /computer:<Target> /rediscover

注意

在此命令中, <Target> 代表您要設定的電腦。 選項 /rediscover 會指示電腦檢查網路是否有新的或更新的時間來源。

如需有關 w32tm 命令可用選項的更多資訊,請參閱 Windows Time 服務工具和設定:W32Time 的命令列參數

如果您重新同步鐘,請再嘗試驗證。

h。 檢查 Windows Update 狀態

請確定所有域控制器、用戶端計算機和目標伺服器都有相關的 Windows 更新。

如果您已安裝任何更新,請重新啟動受影響的計算機,然後再試一次進行驗證。

一。 檢查應用程式更新狀態

請確定用戶端電腦和目標伺服器上的用戶端和伺服器應用程式是最新的。 如果您安裝任何更新,請重新啟動受影響的計算機,然後再試一次進行驗證。

j. 重新啟動電腦

如果您尚未重新啟動用戶端計算機、目標伺服器或域控制器,請立即重新啟動它們。 計算機重新啟動之後,請再試一次進行驗證。

如果您的基礎結構正常,而且您仍有問題,請繼續進行更進階的疑難解答程式。

3.收集追蹤和票證數據

下列程式使用免費的 網路監視器 工具。 在用戶端電腦和目標伺服器上下載並安裝此工具。 如需如何使用網路監視器來收集追蹤數據和識別 Kerberos 訊息的範例,請參閱 網路擷取中的 Kerberos 錯誤

一。 收集同時進行的網路紀錄

在用戶端電腦上,遵循下列步驟:

  1. 執行下列其中一個動作:

    • 重新啟動用戶端電腦。
    • 註銷您用來進行疑難解答的帳戶,然後重新登入。
    • 關閉用戶端應用程式,然後重新開啟它。
  2. 開始進行追蹤。 若要這樣做,請遵循下列步驟:

    1. 選取 [開始],然後輸入 netmon
    2. 在搜尋結果中,以滑鼠右鍵按兩下 [Microsoft網络監視器 3.4],然後選取 [以 系統管理員身分執行 ] (在 [用戶帳戶控制] 視窗中選取 [ ]。
    3. 在 [網络監視器] 中,選取 [ 啟動]。
  3. 開啟系統管理指令提示字元視窗,然後依序執行下列命令:

    ipconfig /flushdns
    nbtstat -RR
    klist purge
    klist -li 0x3e7 purge
    

在目標伺服器上,遵循下列步驟:

  1. 以系統管理員身分開啟網路監視器,然後選取 [ 啟動]。

  2. 開啟系統管理指令提示字元視窗,然後依序執行下列命令:

    ipconfig /flushdns
    nbtstat -RR
    klist purge
    klist -li 0x3e7 purge
    

嘗試重現您的問題,然後停止並保存客戶端電腦和目標端伺服器上的追蹤記錄。 若要這樣做,請在 [網络監視器] 中選取 [ 停止],然後選取 [ 另存新檔]。

b。 記錄票證資訊

重現問題並停止追蹤之後,請檢查記錄追蹤數據時所產生的 Kerberos 票證。 在用戶端電腦和目標伺服器上的命令提示字元中,執行下列命令:

klist tickets

此命令會產生票證清單。 您可以將此資訊複製到另一個應用程式(例如記事本),以便在稍後的疑難解答程式中使用它。

4.檢查 Kerberos 訊息的追蹤數據

您可以使用網路監視器來檢閱、篩選和搜尋擷取檔案中的數據。 特別是,尋找使用 「KerberosV5」 標記的事件。這些事件提供狀態資訊。 它們也可以列出已連絡之域控制器的名稱或IP位址,以及客戶端嘗試連線的服務主體名稱(SPN)。

包含類似下列字串的事件描述是一般 Kerberos 函式的一部分:

  • KerberosV5:KRB_Error -KDC_ERR_PREAUTH_REQUIRED
  • KerberosV5:AS 要求
  • KerberosV5:AS 回應
  • KerberosV5:TGS 請求
  • KerberosV5:TGS 回應
  • KerberosV5:AP 要求
  • KerberosV5:AP 回應

注意

您也可以使用網路監視器來檢查 HTTP GET 要求中票證資訊的追蹤數據。 如果 GET 要求中遺漏票證資訊,則使用 Kerberos 驗證時發生問題。

包含類似下列字串的事件描述表示發生問題。 下列清單包含一些最常見的錯誤。 如果您看到其中一個字串,請注意任何伺服器名稱、IP 位址和SPN以供稍後使用。

  • KDC_ERR_PRINCIPAL_NOT_UNIQUE或KDC_ERR_S_PRINCIPAL_UNKNOWN。 要求的SPN與多個帳戶相關聯,或未與任何帳戶相關聯。 如需解決這些問題的說明,請參閱 Kerberos 產生 KDC_ERR_S_PRINCIPAL_UNKNOWN 或 KDC_ERR_PRINCIPAL_NOT_UNIQUE 錯誤

  • KRB_AP_ERR_MODIFIED。 用戶端無法解密服務票證。 多個問題可能會導致此錯誤。 檢查伴隨KRB_AP_ERR_MODIFIED的其他錯誤的追蹤數據。 檢查事件記錄檔中的事件 ID 4 和其他相關事件,如 1. 檢查事件和記錄 中所述。

  • ERB_AP_ERR_SKEW。 用戶端和目標伺服器時鐘已不同步。如需詳細資訊,請參閱 確定計算機時鐘已同步處理。

  • KDC_ERR_ETYPE_NOTSUPP。 驗證過程中涉及的一個或多個元件使用了一種對其他元件已停用的加密類型。 請查看事件記錄檔,以取得哪些元件和涉及哪些加密類型的詳細資訊,如 1 中所述。檢查事件和記錄

常見問題與解決方案

HTTP 400 - 不正確的要求 (要求標頭太長) 問題

如果使用者屬於大量群組(例如超過 1,000 個群組),Kerberos 可能會拒絕使用者存取,因為它無法正確處理要求。 如需此問題的詳細資訊,請參閱下列文章:

服務問題

服務問題通常涉及SPN和服務帳戶。 例如,SPN 可能不正確、遺失、在不正確的帳戶上設定,或在多個帳戶上設定。 本文中的疑難排解檢查清單包括: a. 收集同時進行的網路追蹤,如本文稍前所述。 如果您已判斷常見的SPN問題,請參閱下列文章:

單一登錄 (SSO) 問題

單一登錄是一種驗證方法,可讓使用者使用一組認證登入單一內部網路內的多個系統或應用程式。 若要正確運作,目標服務(或目標服務的前端元件)和用戶端都必須具有正確的設定。 如需如何針對這些設定進行疑難解答的資訊,請參閱 針對 Kerberos 單一登錄問題進行疑難解答

委派問題

當您的目標服務有個別的前端和後端元件時,Kerberos 可以將客戶端認證(包括訪問許可權)委派給服務帳戶。 簡單來說,用戶端會存取前端服務,然後前端服務代表用戶端存取後端服務。

Kerberos 支援三種類型的委派:

  • 不受限制的委派。 用戶端存取前端服務之後,前端服務可以代表用戶端存取任何其他服務。 此設定最容易實作,但也是最不安全的。 不建議使用不受限制的委派,因為它不會限制已驗證帳戶可以互動的服務。
  • 限制委派。 前端服務維護著一份它能代表用戶端存取的服務清單。
  • 以資源為基礎的限制委派 (RBCD) 。 後端服務會維護一個允許清單,列出能代表用戶端要求存取後端服務的前端服務。

注意

如果您在搭配 CIFS 使用限制委派時遇到問題,請參閱 CIFS 的限制委派失敗,並出現ACCESS_DENIED錯誤

這很重要

  • 請勿在同一組前端和後端伺服器上設定限制委派和 RBCD。

    限制委派和 RBCD 是不同的組態,而且互斥。 當前端服務向後端服務要求票證時,KDC 會先檢查前端服務是否有限制委派。 如果未針對前端服務設定限制委派,KDC 會檢查後端服務是否有以資源為基礎的限制委派。 由於此順序,限制委派優先於以資源為基礎的委派。

  • 根據預設,Microsoft Edge 不支援不受限制的委派。 如果您使用不受限制的委派,請參閱 使用 Microsoft Edge (Chromium) 的 Kerberos 不受限制的雙躍點驗證 ,以取得所需設定的詳細資訊。

  • 不建議使用不受限制的委派,因為它不會限制已驗證帳戶可以與其互動的服務。

支援的拓撲類型

不同的委任類型對於您的拓撲結構有不同的需求。 下表列出三種常見的拓撲類型,以及每種類型都支援哪種類型的委派(如果有的話)。

拓撲類型 不受限制的委派 限制委派 RBCD
所有服務都位於單一網域中 支援 (不建議) 支持 支持
前端和後端服務位於不同的網域中 支援 (不建議) 不支援 支持
前端和後端服務位於不同的 (受信任) 樹系中 * 支援 (不建議) 不支援 支援*

* 請確定前端服務的服務帳戶可以在受信任網域中與受信任的網域控制器進行驗證。

針對特定委派類型進行疑難解答

委派的組態詳細數據會根據您使用的委派類型,以及前端服務所使用的帳戶類型而有所不同。 若要進一步針對委派問題進行疑難解答,請參閱下列適當的文章:

使用日誌分析測試情境來排除 Kerberos 認證的故障

如需進階 Kerberos 測試和疑難解答,請參閱 使用記錄分析測試案例對 Kerberos 驗證進行疑難解答