文章編號: 326985 - 上次校閱: 2007年4月23日 - 版次: 12.1

如何疑難排解與 Kerberos 相關的問題,在 IIS 中

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何疑難排解 Kerberos 網際網路資訊服務 (IIS) 伺服器上的驗證。這不是完整的輔助線,但有許多的參照,可幫助您疑難排解您可能會遇到的大部分 Kerberos 問題。

預設情況下,在 Microsoft Windows 2000 伺服器上安裝 IIS 時在 Metabase 中的 NTAuthenticationProviders 索引鍵設定為 交涉、 NTLM。這表示當 Microsoft Internet Explorer 5.0 或更新版本的用戶端連線至網站,IIS 傳回這兩個值中 WWW 驗證 標頭。發生這種情況時用戶端會決定可以連接與哪一種驗證方法。如果用戶端決定使用 交涉 方法連線,與來決定是否要使用 Kerberos 或 NTLM 驗證伺服器會交涉用戶端。如果用戶端不支援 交涉 方法,用戶端會使用 NTLM 驗證。

請注意這是非常一般描述此處理程序的運作。涉及 Kerberos 時,也可能會發生許多您可能不會注意到其他事情。

如果 Internet Explorer 用戶端可以使用 Kerberos 通訊協定連線,會執行一些額外的安全性檢查。比方說用戶端可能會取得票證從 「 票證授與服務 (TGS),並再使用該票證來驗證。

如更多有關此程序的運作方式的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
217098? (http://support.microsoft.com/kb/217098/ ) 基本概觀 Kerberos 驗證在 Windows 2000 中
如需詳細資訊請造訪下列 Microsoft 網站]:
驗證 http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/default.mspx?mfr=true (http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/default.mspx?mfr=true)
您必須熟悉這些疑難排解 Kerberos 的參考。

附註如果您最近已經升級到網際網路總管 6.0,您可能會遇到 Kerberos 問題,因為預設不選取 [啟用整合式 Windows 驗證] 核取方塊。 如需有關如何確定的正確設定,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項時此選項:
299838? (http://support.microsoft.com/kb/299838/ ) 無法交涉 Kerberos 驗證升級至 Internet Explorer 6 之後

請確認驗證方法

請確定正確的驗證方法在 IIS 伺服器或特定網站 Metabase 中列出。如果您的伺服器已從 Microsoft Windows NT 4.0 升級到 Windows 2000,交涉 的驗證方法沒有可供使用],而您必須手動加入。如果您不做為 Windows 2000 升級從 Windows NT 4.0,確定適當的驗證方法都可供使用。 如需有關如何確認的交涉的驗證方法使用並加入方法,如果遺失,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
248350? (http://support.microsoft.com/kb/248350/ ) Kerberos 驗證失敗,則從 IIS 4.0 升級到 IIS 5.0 之後
請注意您就可以設定此驗證方法,在網站層級,而不是整個的 IIS 伺服器。如果要執行此動作使用 [新增 Web 站台的號碼的 [Adsutil.vbs 指令碼]。比方說若要設定預設的網站的驗證方法,使用下列命令:

cscript adsutil.vbs 設定 w3svc/1/NTAuthenticationProviders"交涉 NTLM"
1 號網站所列在 [網際網路服務管理員 (ISM) w3svc 」 後。

判斷伺服器名稱

接下來,判定是否您要連線到 Web 站台使用伺服器的實際的 NetBIOS 名稱或一個別名如一個 DNS 名稱 (比方說 www.microsoft.com)。如果您正在使用而不是實際的名稱伺服器的名稱來存取 Web 伺服器,必須新服務主要名稱 (SPN) 已註冊使用 Setspn 工具從 Windows 2000 Server 資源工具箱 」。因為 Active Directory 並不知道這個服務名稱,[TGS 並不會提供您要驗證使用者票證。這會強制用戶端使用下一個可用的驗證方法,是 NTLM,重新協商以決定。如果 Web 伺服器回應到 www.microsoft.com 的網域名稱系統 (DNS) 名稱,但該伺服器具名 webserver1.development.microsoft.com 您必須在 Active Directory 中登錄 www.microsoft.com 每部 IIS 伺服器上。要執行此動作,您必須下載之 Setspn 公用程式,並在 IIS 伺服器上進行安裝。

如需有關如何下載 Setspn 公用程式的詳細資訊,請造訪下列 Microsoft 網站]:
Setspn.exehttp://www.microsoft.com/downloads/details.aspx?FamilyID=5fd831fd-ab77-46a3-9cfe-ff01d29e5c46&DisplayLang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=5fd831fd-ab77-46a3-9cfe-ff01d29e5c46&DisplayLang=en) 如果要判斷您是否使用實際的名稱來連線,嘗試使用其實際名稱,而不是 DNS 名稱連線到伺服器。如果您無法連線到伺服器,請參閱 < Verify the Computer Is Trusted for Delegation > 一節。如果您可以連線至伺服器,請依照下列步驟設定 SPN 您用以連接伺服器的 DNS 名稱:
  1. 安裝 Setspn 公用程式。
  2. 在 IIS] 伺服器上開啟命令提示字元],然後再變更到 C:\Program Files\Resource 套件目錄]。
  3. 執行下列命令,新增這個新的 SPN (www.microsoft.com) 到 Active Directory webserver1 其中是 NetBIOS 名稱伺服器的伺服器:
    Setspn-A HTTP/www.microsoft.com webserver1
    您會收到類似下列的輸出:
    Registering ServicePrincipalNames for CN=webserver1,OU=Domain Controllers,DC=microsoft,DC=com
    HTTP/www.microsoft.com
    Updated object
    							
  4. 若要查看此新值伺服器上檢視的 SPN 清單,輸入下列 IIS 伺服器上: Setspn L webservername
請注意您不需註冊所有服務。許多服務類型,例如 HTTP、 W3SVC、 WWW、 RPC、 CIFS (檔案存取)、 WINS 和不斷電供電系統 (UPS) 會對應到名為 HOST 預設的服務類型。比方說如果用戶端軟體會使用一個 HTTP/webserver1.microsoft.com SPN 對 webserver1.microsoft.com] 伺服器執行網頁伺服器的 HTTP 連線,但未在伺服器上註冊此 SPN Windows 2000 網域控制站會自動對應它到 HOST/webserver1.microsoft.com。這種對應只適用於 Web 服務已在本機系統帳戶下執行時。

重要如果您想要註冊的 SPN (網站 LocalSystem 或 NetworkService 帳戶下執行) 的電腦帳戶的您必須不變更電腦的現有的 SPN。而是,只新增新的 HTTP SPN。如果網站的名稱符合主機名稱,[SPN 沒有變更就需要。如果標準的命名 HOST / Server] 與 [HOST / ServerFQDN 已遺失,您必須調查時它會註冊必要的 SPN 有 Netlogon 服務在伺服器上的問題。當您啟用服務的記錄時,應該在記錄檔中收到錯誤訊息。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
109626? (http://support.microsoft.com/kb/109626/ ) 啟用 [Net Logon] 服務的偵錯記錄
您也應該註冊錯誤的相關系統事件日誌中收到 Netlogon 的事件。

請確認電腦受信任可以委派

如果這個 IIS 伺服器是網域的成員,但不是網域控制站,電腦必須受信任可以委派的 Kerberos 正常運作。若要啟用這,請依照下列步驟執行:
  1. 在網域控制站上按一下 [開始],並指向 [設定,然後按一下 [控制台]
  2. 連按兩下 [系統管理工具] 資料夾,然後再按兩下 [Active Directory 使用者和電腦
  3. 在您的網域之下按一下 [電腦] 資料夾。
  4. 在清單找出 IIS 伺服器。伺服器] 名稱上按一下滑鼠右鍵,然後按一下 [內容]
  5. 按一下 [一般] 索引標籤、 按一下以選取 [信任可以委派] 核取方塊,然後再按 [確定]

使用 Kerbtray

疑難排解 Kerberos 問題的另一個非常有用的公用程式是屬於 Windows 2000 資源工具箱 」 的 Kerbtray.exe。利用 Kerbtray 您可以看到 Kerbero 票證已授與本機快取記憶體用完。如果要下載此公用程式,請造訪下列 Microsoft 網站:
Kerbtray.exe: Kerberos Trayhttp://www.microsoft.com/downloads/details.aspx?FamilyID=4e3a58be-29f6-49f6-85be-e866af8e7a88&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=4e3a58be-29f6-49f6-85be-e866af8e7a88&displaylang=en)
如疑難排解 Kerberos 的秘訣和有關此工具的詳細資訊,請造訪下列 Microsoft 網站]:
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx (http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx)

啟用安全性事件記錄

疑難排解 Kerberos 驗證失敗時,安全性事件記錄很有用。使用這啟用,您可以看到登入失敗,當使用者嘗試透過 IIS 驗證。這提供什麼可能會發生在驗證過程和驗證程序為何失敗的說明。

本節中資訊的其餘部分是由 Michael Howard,加上引號直接從 Desiging 安全 Web 架構應用程式的 Windows 2000。 因為 Windows 2000 中的連線會驗證,您必須瞭解如何讀取登入事件。本章節的目的是要解釋不同組成一個登入事件的變數。

登入/登出的稽核設定

Microsoft Windows NT 包含只有一個登入和登出的稽核類別目錄。Windows 2000 引入一秒。--登入/登出和帳戶登入--將兩個類別會在下列各節中說明。

稽核帳戶登入事件] ([登入/登出] 類別)

此事件類別目錄中所有版本的 Windows NT 和 Windows 2000, 可用表示的帳戶登入或登出,或進行到電腦的網路連線。亦即稽核事件會觸發登入發生在電腦上。[登入/登出] 類別很重要,因為它提供何時使用 IIS、 SQL Server 和 COM + 大部分的資訊。

最大顯著性事件中的 [登入/登出] 類別目錄是
  • 登入/登出事件 529 (登入失敗)
  • 登入/登出事件 528 (登入成功)
  • 登入/登出事件 540 (網路登入成功)
下列章節顯示這些事件,Table 1 說明每個事件中的欄位。

登入/登出事件 529 (登入失敗)

Event Type:     Failure Audit
Event Source:   Security
Event Category: Logon/Logoff 
Event ID:       529
Date:           9/3/1999
Time:           8:57:21 PM
User:           NT AUTHORITY\SYSTEM
Computer:       CHERYL-LAPTOP
Description:
Logon Failure:
   Reason:           Unknown user name or bad password
   User Name:        Administrator
   Domain:           CHERYL-LAPTOP
   Logon Type:       2
   Logon Process:    seclogon
   Authentication Package: Negotiate
   Workstation Name: CHERYL-LAPTOP

				

登入/登出事件 528 (登入成功) 和登入/登出事件 540 (網路登入成功)

Event Type:     Success Audit
Event Source:   Security
Event Category: Logon/Logoff 
Event ID:       540
Date:           1/23/2000
Time:           5:41:39 PM
User:           EXAIR\Cheryl
Computer:       CHERYL-LAPTOP
Description:
Successful Network Logon:
   User Name:        cheryl
   Domain:           EXAIR
   Logon ID:         (0x0,0x17872A8)
   Logon Type:       3
   Logon Process:    Kerberos
   Authentication Package: Kerberos
   Workstation Name:

				
摺疊此表格展開此表格
欄位註解
事件類型、 來源、 類別、 識別碼、 日期及時間從名稱即可得知其意義
使用者
使用者帳戶執行登入。比方說,這可能是它是用來啟動許多 Windows 2000 服務的 LocalSystem 帳戶的 NT AUTHORITY\SYSTEM。
電腦發生事件的電腦
原因會套用到登入失敗只 ; 它的原因之帳戶登入失敗。
使用者名稱嘗試登入的使用者帳戶名稱
網域嘗試登入的使用者帳戶網域。
登入類型數字值,指出登入嘗試的型別。可能值為:
2 互動式 (以互動方式登入)
3 網路 (透過網路存取系統)
4 批次 (以批次工作啟動)
5 服務 (由服務控制站啟動 Windows 服務)
6 Proxy (Proxy 登入 ; 在不使用的 Windows NT 或 Windows 2000)
7 解除鎖定解除鎖定工作站
8 NetworkCleartext (使用純文字認證的網路登入)
9 NewCredentials (由 RunAs 使用時,使用 /netonly 選項)
登入處理程序執行登入處理程序。以下是一些範例登入程序:
-Advapi (觸發 LogonUser ; 呼叫 LogonUser 呼叫 LsaLogonUser,與其中一個引數來 LsaLogonUser OriginName,識別登入嘗試的原點)
-User32 (標準 Windows 2000 使用登入 Winlogon)
-SCMgr (服務控制管理員啟動服務)
-KsecDD (網路連線 [SMB 伺服器-例如當您使用 NET 使用的命令)
-Kerberos ([Kerberos 安全性支援提供者 [SSP])
-NtlmSsp (NTLM SSP)
-Seclogon (次要登入-也就是 RunAs 命令)
-IIS (IIS 執行登入 ; 在 IUSR_machinename 帳戶登入時,或使用摘要 」 或 「 基本驗證時產生)
驗證封裝安全性封裝呼叫嘗試登入帳戶。驗證封裝是動態連結程式庫 (DLL) 分析登入的資料,並決定是否要驗證的帳戶。最常見的範例是 Kerberos]、 [交涉]、 [NTLM,] 和 [MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 (也稱為 MSV1_0 ; 驗證 SAM 資料庫中的使用者、 支援傳遞驗證帳戶受信任網域中,但支援子封裝) 工作站名稱工作站名稱如果已知登入時使用的主體。

稽核帳戶登入事件 (帳戶登入類別)

此事件類別表示的帳戶登入或登出,且電腦用來驗證帳戶。在這種情況下稽核事件會觸發帳戶所在的電腦上。許多與 Kerberos 相關事件,例如票證發行,記錄啟用此稽核類別目錄時。

下列章節會顯示兩個常看到帳戶登入失敗事件。

帳戶登入事件 676 (登入失敗): 驗證票證要求失敗
Event Type:     Failure Audit
Event Source:   Security
Event Category: Account Logon 
Event ID:       676
Date:           5/11/2000
Time:           8:47:01 PM
User:           NT AUTHORITY\SYSTEM
Computer:       DBSERVER
Description:
Authentication Ticket Request Failed:
   User Name:  Major
   Supplied Realm Name:    EXPLORATIONAIR.COM
   Service Name:     krbtgt/EXPLORATIONAIR.COM
   Ticket Options:   0x40810010
   Failure Code:     6
   Client Address:   172.100.100.12

				
注意 什麼是 NT AUTHORITY\SYSTEM 帳戶嗎?這個帳戶通常稱為 LocalSystem ; 它是執行哪些大部分服務帳戶。 您會看到許多參考到這個帳戶在安全性事件日誌。

事件 676 表示主要無法取得一個初始的票證授與票證 (TGT) 從金鑰發行中心 (KDC)。事件的最重要的一部分是失敗碼。這些代碼是與 MIT Kerberos 碼相同的。 Table 2 說明一些最常見的錯誤代碼 ; 可以在主要 http://www.ietf.org/rfc/rfc1510.txt (http://www.ietf.org/rfc/rfc1510.txt) 中找到完整的清單。

[表 2-某些常見的 Kerberos 失敗代碼
摺疊此表格展開此表格
失敗程式碼註解
6Kerberos 資料庫中找不到用戶端。
7Kerberos 資料庫中找不到伺服器。這通常表示尚未註冊該服務的服務主要名稱 (SPN)。
23密碼已經過期。
32票證已過期。
33票證尚未生效。
34要求會重新執行。某人正嘗試播放 Kerberos 用戶端的回應,您可能是攻擊。
37太很好時鐘的扭曲。Kerberos 很重要的時間; 請確定所有時鐘同步都處理


錯誤代碼的大量的帳戶登入事件 681 (登入失敗)

有時候,您可能會看到類似下面的錯誤。 問題是錯誤程式碼是幾乎無用。
Event Type:     Failure Audit
Event Source:   Security
Event Category: Account Logon 
Event ID:       681
Date:           5/11/2000
Time:           8:47:01 PM
User:           NT AUTHORITY\SYSTEM
Computer:       DBSERVER
Description:
The logon to account: Major
 by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
 from workstation: WEBSERVER
 failed. The error code was: 3221225572

				
表格 3-範例帳戶登入錯誤代碼。

摺疊此表格展開此表格
錯誤 Code(Decimal)錯誤 Code(Hex)註解
32212255720xC0000064指定的使用者並不存在。
32212255700xC0000062提供的名稱不正確格式的帳戶名稱。
32212255690xC0000061必要的權限不是由用戶端持有。
32212255780xC000006A嘗試更新密碼時, 這個傳回的狀態會指出所提供目前密碼值不正確。
32212255800xC000006C密碼不正確。當嘗試更新密碼,這個狀態表示某些密碼更新規則已經 violated.For 範例,密碼可能不符合長度準則。
32212255850xC0000071使用者帳戶的密碼已經過期。
32212255860xC0000072參照的帳戶目前已停用。

如果前一個兩個安全性失敗事件--強力的要求的初始的 TGT 失敗,錯誤 6 (Kerberos 資料庫中找不到用戶端) 建立相互關聯他嘗試登入和泛用的登入失敗發生的錯誤 (不存在指定的使用者) 的 3221225572--很普通看到此錯誤是: 強力不是有效的帳戶!

?考

如需有關 Kerberos 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
266080? (http://support.microsoft.com/kb/266080/ ) 常見問題集 Kerberos 問題的答案
244474? (http://support.microsoft.com/kb/244474/ ) 如何強制使用 TCP,而不是 Windows Server 2003 中、 Windows XP 以及 Windows 2000 的 UDP Kerberos
262177? (http://support.microsoft.com/kb/262177/ ) 如何啟用 Kerberos 事件記錄
287537? (http://support.microsoft.com/kb/287537/ ) 使用基本驗證來產生 Kerberos 語彙基元 (Token)
277741? (http://support.microsoft.com/kb/277741/ ) Internet Explorer 登入 Kerberos 的失敗因為至沒有足夠的緩衝區
269643? (http://support.microsoft.com/kb/269643/ ) 因為連線至 IIS 的不足,無法緩衝區的運作不到網際網路總管 Kerberos 驗證
264921? (http://support.microsoft.com/kb/264921/ ) IIS 驗證瀏覽器用戶端的方式
248350? (http://support.microsoft.com/kb/248350/ ) Kerberos 驗證失敗,則從 IIS 4.0 升級到 IIS 5.0 之後
294382? (http://support.microsoft.com/kb/294382/ ) 如果從一台伺服器的 NetBIOS 名稱不同網站的 「 主機頁首 」 驗證可能失敗 401.3 」 的錯誤
217098? (http://support.microsoft.com/kb/217098/ ) 在 Windows 2000 中的 Kerberos 驗證的基本概觀
283201? (http://support.microsoft.com/kb/283201/ ) 如何在 Windows 2000 使用 COM + 中使用委派
299838? (http://support.microsoft.com/kb/299838/ ) 無法交涉 Kerberos 驗證升級至 Internet Explorer 6 之後
230476? (http://support.microsoft.com/kb/230476/ ) Kerberos 相關的常見錯誤,在 Windows 2000 中的描述
320903? (http://support.microsoft.com/kb/320903/ ) 用戶端無法透過 TCP 使用 Kerberos 登入
235529? (http://support.microsoft.com/kb/235529/ ) Kerberos 支援 Windows 2000 為基礎的伺服器叢集上
929650? (http://support.microsoft.com/kb/929650/ ) 如何使用服務主要名稱,當您在 IIS 6 上設定裝載的 Web 應用程式
Kerberos 常見問題集包含 Kerberos 通訊協定的相關額外資訊:
http://www.faqs.org/faqs/kerberos-faq/general/index.html (http://www.faqs.org/faqs/kerberos-faq/general/index.html)

這篇文章中的資訊適用於:
  • Microsoft Internet Information Services 5.0
關鍵字:?
kbmt kbhowtomaster KB326985 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:326985? (http://support.microsoft.com/kb/326985/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。