問題
在之前的技巧中,您討論了由於在Active Directory中存在大量的組,需要超越MaxTokenSize來容納 更大的Kerberos tokens。與此同時,我們也注意到MaxTokenSize需要做出相應調整,這是由於使用 Windows 集成身份認證(Windows Integrated Authentication)的web應用程序也出現了啟動失敗的問題 ,其中包括SQL Server Reporting Services。我就職的公司做出了必要的改動並重新啟動了SQL和Web服 務器。啟動後,盡管SQL Server Management Studio的問題解決了,但是我們的Web應用程序仍然存在問 題。請問還需要再做什麼改動呢?
專家解答
先前關於Kerberos Token sizes的方法解決了在以下目錄的一段注冊表中修改MaxTokenSize的問題: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters。不幸的是,當使用 Windows集成身份驗證(Windows Integrated Authentication)連接到SQL Server時,這並不是預設大小 的唯一的地方。額外的兩個值是MaxFieldLength 和MaxRequestBytes。與MaxTokenSize不同的是,當問 題影響到web應用程序時,它呈現出不同的一點。默認情況下,Windows集成身份驗證(Windows Integrated Authentication)在Internet Explorer中啟用,在Internet Options | Advanced界面中顯 示如下:
圖一
當用戶嘗試用別名或者DNS名稱訪問網頁時,DNS解析將嘗試進行。因為規模較大的Kerberos token大 小超過默認的MaxFieldLength,你將立即得到錯誤的信息。這與由於在輸入地址和接收“網頁無法 顯示”的錯誤信息存在時間差而導致一個網頁無法找到的情況不同。這個難題中有趣的部分在於, 如果嘗試要麼用主機名要麼用別名來訪問網頁,它是不會成功的。盡管如此,網頁可以通過IP地址訪問 。然而,在網頁加載時任何SQL查詢的執行都會失敗。