當使用者屬於多個群組的 Kerberos 驗證問題

Windows XP 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Windows XP 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

Windows Server 2003 的支援已於 2015 年 7 月 14 日結束

Microsoft 已於 2015 年 7 月 14 日結束對 Windows Server 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:327825
支援 2011 年 7 月 12,Windows Vista Service Pack 1 (SP1) 結尾。若要繼續接收 Windows 安全性更新,請確定您正在執行 Windows Vista Service Pack 2 (SP2)。如需詳細資訊,請參閱此 Microsoft 網頁︰ 結束 Windows 的某些版本的支援.
徵狀
當使用者屬於多個群組時,該使用者可能會有與驗證或群組原則 」 設定的問題。下列的 「 Microsoft 知識庫 」 文件描述更詳細地這些徵狀︰

269643 Internet Explorer Kerberos 驗證無法運作因為不足,無法連線到 IIS 緩衝區所造成
280380 緩衝區溢位所侵襲可能延伸預存程序
2020943 「 HTTP 400-錯誤的要求 (要求標頭太長) 」 的錯誤在網際網路資訊服務 (IIS)
這些文件所述的解析度會指示您修改 MaxTokenSize 的登錄值。這種解析度進行改進。如果您使用本文所述的 hotfix 時,可能沒有編輯預設的 MaxTokenSize 值。

本文所述的 hotfix 取代 hotfix 這一節中所列的微軟知識庫文件中所述。
發生的原因
無法驗證使用者,因為 Kerberos 語彙基元時驗證嘗試產生固定的最大大小。例如遠端程序呼叫 (RPC) 傳輸,而且當他們配置緩衝區,進行驗證時,MaxTokenSize 值依賴 HTTP。在 Windows 2000 (原始發行版本),MaxTokenSize 值為 8000 個位元組。在 Windows 2000 Service Pack 2 (SP2) 和 Windows Server 2003 中,MaxTokenSize 值會是 12000 個位元組。

Kerberos 使用 Kerberos 封包傳輸作用中的 「 目錄 」 群組成員資格的權限屬性憑證 (PAC) 欄位。這也適用於 [使用中的目錄宣告的資訊 (動態存取控制)] 欄位從 Windows Server 2012 開始。如果有許多的群組成員資格使用者,而且有許多使用者或裝置所使用的宣告,這些欄位可以會佔用大量封包中的區域。

如果使用者是 120 種以上的群組的成員,由 MaxTokenSize 值的緩衝區不足。因此,使用者無法進行驗證,並且會收到 「 記憶體不足 」 錯誤訊息。在套用本文所述的 hotfix 之前,新增至使用者帳戶的每個群組會將此緩衝區增加 40 位元組。

附註在許多情況下,Windows NTLM 驗證會如預期般運作。您可能看不到分析 Kerberos 驗證問題。不過,在其中套用群組原則設定的案例可能無法如預期般運作。
解決方案
重要若要解決這個問題,您必須設定 MaxTokenSize 的登錄值,Kerberos 驗證程序中涉及的所有電腦。這包括 SQL Server 用戶端。(也就是登錄機碼都必須設定每個要求/回應流程涉及的電腦上。因此,如果沒有在其的 web 應用程式需要,SQL Server 用戶端或使用者的權杖具有要傳遞至後端 SQL Server 資料庫,登錄機碼設定 SQL Server 用戶端電腦上,SQL Server 資料庫電腦,而且也執行 Internet Explorer 的用戶端電腦執行的 web 伺服器執行 IIS依此類推。)

附註下列的 Windows 版本包含修正這個問題︰
  • Windows 8
  • Windows Server 2012
  • Windows 7
  • Windows Server 2008 R2
  • Windows 2003 Server
  • Windows Vista
  • Windows 2008 Server
  • Windows XP 商用版

服務套件資訊

若要解決這個問題,請取得最新的 service pack,Microsoft Windows 2000。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
260910 如何取得最新的 Windows 2000 service pack

Hotfix 資訊

已經可以從 Microsoft 取得支援的 hotfix。不過,其旨在修正本文所述的問題。它只適用於發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果此問題不會嚴重影響,我們建議您等候下一步的 Windows 2000 service pack 包含此 hotfix。

若要立即解決這個問題,請連絡 Microsoft 客戶支援服務 」 取得 hotfix。Microsoft 客戶支援服務電話號碼以及支援費用的相關資訊的完整清單,請移至下列的 Microsoft 網站︰附註在特殊的情況下,如果 Microsoft 支援專業人員認為某特定更新程式可以解決您的問題時,可能就不會收取一般因支援電話所產生的費用。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。此 hotfix 的英文版具有下列表格中所列檔案屬性 (或較新的檔案屬性)。其日期和時間,這些檔案會列出在國際標準時間 (UTC)。當您檢視檔案資訊時,會將它轉換為本地時間。若要查看 UTC 與當地時間的時差,請在 [控制台] 中的日期和時間項目使用 [時區] 索引標籤。
狀況說明
Microsoft 已確認這是「套用」一節所列出的 Microsoft 產品的問題。 第一次,這個問題已經獲得修正 Microsoft Windows 2000 Service Pack 4年] 中。
其他相關資訊

語彙基元至 Windows Server 2008 R2 的大小計算 Windows 2000

如果您使用本文所述的 hotfix 時,您不必修改 MaxTokenSize 登錄值,在大多數情況下。不過,有某些情況下,您不必套用此 hotfix 之後,請修改 MaxTokenSize 的登錄值。您將此 hotfix 套用至所有網域控制站之後,請使用下列公式來決定您是否擁有修改 MaxTokenSize 值︰
TokenSize = 1200 + 40 d + 8s
此公式會使用下列值︰
  • d︰ 的網域本機使用者群組的成員數目加上外的使用者所屬的成員使用者的帳戶網域的萬用群組的數目加上的群組數目表示安全性識別碼 (SID) 歷程記錄。
  • s 安全性的通用群組的使用者是成員的數目加上使用者所隸屬的使用者帳戶網域中的萬用群組的數目。
  • 1200︰ 票證的額外負荷的估計的值。這個值可以而異,視因素,例如 DNS 網域名稱的長度、 用戶端名稱,以及其他因素而定。
在委派中使用 (例如,當使用者驗證的網域控制站) 的情況下,我們建議您將語彙基元大小加倍。

何時要設定的登錄項目

如果您使用此公式來計算語彙基元大小小於高達 12000 個位元組 (預設大小),您不必修改 MaxTokenSize 登錄值,在網域用戶端上。如果值超過高達 12000 個位元組,請參閱下列 「 Microsoft 知識庫 」 文件,如何調整 MaxTokenSize 的登錄值的說明︰

263693 群組原則可能不會套用至屬於多個群組的使用者

注意事項
  • 當您變更的 MaxTokenSize 值時,您必須重新開機,使變更生效。
MaxTokenSize登錄項目的建議的值是 65535 的十進位或十六進位 FFFF。MaxTokenSize 值會指定固定的 Kerberos 票證接收緩衝區,其中包含表示帳戶所屬群組的 Sid。

若要使用安全的大小,您可以選擇將MaxTokenSize設定為48000,遵循本文稍後的 HTTP 標頭大小所引入的限制的討論。根據您使用何種值,您可以先遇到 Kerberos 錯誤事件或 IIS HTTP 400 錯誤的問題。

您可能會遇到的已知的問題

存取語彙基元大小的已知的問題︰

本機安全性授權 (LSA) 服務會從這個 SID 緩衝區產生使用者的存取語彙基元。硬式編碼的限制的客戶可定義此語彙基元的 Sid 是 1,015,,請參閱此知識庫文件︰
328889 是多個 1,015 群組的成員的使用者可能無法登入驗證
http://support.microsoft.com/kb/328889/EN-US

因此,多個 1015年的有效 Sid 的 MaxTokenSize 值並不怎麼有用的。在下列公式︰
MaxTokenSize = 1200 + 40 d + 8s
40 d 表示您有網域本機群組 SID 40 位元組。8s 表示 8 個位元組的網域通用/萬用群組 SID。

因此,如果您有 MaxTokenSize 值為 0x0000FFFF (64k),您可以用來緩衝大約 1600年網域本機群組的 Sid 或大約 8000 網域通用/萬用群組 Sid。如果您使用 「 受信任可以委派 」 的帳戶,每個 SID 的緩衝區需求可能會增加一倍。在這些案例中,您只可以儲存大約 800 網域本機群組的 Sid 2031 MaxTokenSize 值為 64 K。不過,具有只網域本機群組 Sid 不常見的案例。64 K 的值應足以甚至的委派案例。

已知問題當使用大於 65535 的 MaxTokenSize 值

舊版的這篇文章討論多達 100000 個位元組的值為MaxTokenSize。我們發現版本的 「 SMS 系統管理員在MaxTokenSize100000時,會有問題或更大。我們可以識別出 IPSEC IKE 通訊協定不允許安全性變得大於 66536 的位元組 BLOB,而且它也會失敗時MaxTokenSize設定為較大的值。

已知的問題,如網際網路資訊伺服器 HTTP 接收緩衝區

網際網路資訊服務 (IIS) 會使用降低的要求的緩衝區大小,以減輕阻絕服務攻擊的 64 KB。不過,在 HTTP 要求中的 Kerberos 票證編碼為 Base64 (展開以八個位元的六個位元)。此外,且 Kerberos 票證會使用 133 的原始尺寸的百分比。因此,在 IIS 中的 64 KB 的緩衝區大小上限時,可以使用的 Kerberos 票證的 48 KB。

如果您將MaxTokenSize登錄項目設定為大於 48000,值的緩衝區空間用於 Sid,IIS 可能發生錯誤。不過,如果您是以 48000 設定MaxTokenSize登錄項目,則 Kerberos 可能會發生錯誤。

如需有關 IIS 的緩衝區大小的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
310156 如何限制 HTTP 傳輸,IIS 會接受來自用戶端在 Windows 2000 中的標頭大小

920862 當 Outlook Web Access 使用者嘗試存取信箱,以在 Exchange Server 2003年中的錯誤訊息: 「 HTTP 400 錯誤的要求 (太長的要求標頭)"

Windows Server 2012 變更

Windows Server 2012 引入這個緩衝區的相關考量下列變更︰
  • MaxTokenSize 的預設值變更為 48000 個位元組。
  • 沒有新的配置,來壓縮 PAC.中的 sid
  • 動態存取控制會新增至票證的使用中目錄宣告。因此,計算預期的票證大小已不再直接了當。在預期情況是小於相同從舊版的作業系統所發出的票證由 Windows Server 2012 網域控制站所發出的票證。宣告加入票證大小。不過,Windows Server 2012 檔案伺服器廣泛使用宣告之後,您可以預期階段出大量的您控制要修剪票證大小的檔案存取的群組。

如需有關 Windows Server 2012 變更的詳細資訊,請前往下列 Microsoft TechNet 網站︰

問題票證大小超過時的範例

如需詳細資訊,按一下下面的文件編號,以檢視「Microsoft 知識庫」中的文件:
277741 因緩衝區不足而失敗的 Kerberos 的 Internet Explorer 登入
313661 錯誤訊息: 「 逾時過期 」 發生於您連線到 SQL Server,透過 TCP/IP 及 Kerberos MaxTokenSize 大於 0xFFFF

因為樹系中,您可能有跨網域登入案例,應該設定值全樹系的所有 Windows 架構的系統上。因此,我們建議的 MaxTokenSize 值的最大值是 64 K。

重要在 SQL Server 用戶端,您可能會收到下列錯誤訊息時就會發生這個問題︰
無法產生 SSPI 內容
若要解決這個問題,您必須設定 MaxTokenSize 的登錄值,Kerberos 驗證程序中涉及的所有電腦。這包括 SQL Server 用戶端。

警告:本文為自動翻譯

內容

文章識別碼:327825 - 最後檢閱時間:08/07/2016 03:56:00 - 修訂: 5.0

Microsoft Windows XP Professional, Microsoft Windows XP Professional x64 Edition, Microsoft Windows Server 2003 Service Pack 2, Windows Vista 商用入門版, Windows Vista 商用進階版, Windows Vista 旗艦版, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 Standard, Windows Web Server 2008, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Foundation, Windows Server 2008 R2 Standard, Windows 7 Enterprise, Windows 7 Professional, Windows 7 Ultimate, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2012 Standard, Windows 8 Enterprise, Windows 8 Pro, Microsoft Windows Server 2003 R2 Datacenter Edition (32-Bit x86), Microsoft Windows Server 2003 R2 Datacenter x64 Edition, Microsoft Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Microsoft Windows Server 2003 R2 Enterprise x64 Edition, Microsoft Windows Server 2003 R2 Standard Edition (32-bit x86), Microsoft Windows Server 2003 R2 Standard x64 Edition, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows Server 2012 R2 Standard

  • kbqfe kbhotfixserver kbsecurity kbwin2ksp4fix kbbug kbfix kbwin2000presp3fix kbwin2000presp4fix kbmt KB327825 KbMtzh
意見反應