Iis-6

使用集成身份驗證的 IIS6 內網站點在外部訪問時無法載入

  • February 18, 2011

我為我的組織開發了幾個使用集成身份驗證的內部站點。最終,我們希望擁有已加入域的電腦的使用者可以從外部訪問這些站點。這些站點在內部網路上的域電腦上按預期工作。當我將筆記型電腦帶回家並嘗試訪問這些站點時,問題就出現了。

IIS 僅為兩個站點啟用了集成身份驗證。當我使用 IE8 瀏覽到該站點時,我收到一個使用者名/密碼提示,要求輸入域憑據。我可以把它們放進去,它會起作用,但目標是使用記憶體的令牌進行集成身份驗證。

接下來,我推斷 IE 不會響應集成的身份驗證請求(NTLM 是否是正確的術語?),除非該站點是受信任的。我嘗試將該站點添加到受信任的站點,但我得到了與以前相同的行為。然後我將該站點添加到本地 Intranet 站點,這就是事情變得奇怪的地方。我從 IE 得到一個通用錯誤頁面,沒有錯誤程式碼或任何東西。

只是為了好玩,我載入了 Firefox(我之前設置為使用集成身份驗證)並將這個新站點添加到network.automatic-ntlm-auth.trusted-uris。令我驚訝的是,我能夠毫無問題地載入頁面,並且完全看到了我所期望的(包括驗證集成身份驗證是否有效)。

我現在有點不知所措,因為我不確定從這裡去哪裡。我希望你們中的一些人能夠提供一些見解。


更新 2010 年 5 月 11 日 我按照下面的建議搞亂了 Fiddler,並看到 Firefox 和 IE 處理頁面請求的方式之間存在一些差異。當我測試 Internet Explorer 時,它發出一個請求,遇到 401.2(伺服器配置錯誤)並死掉。發生這種情況時沒有安全日誌條目。Firefox 最初遇到同樣的錯誤,但隨後發送另一個請求並且身份驗證成功。

請記住,最初的測試都是從網路外部進行的,當在內部完成時,我查看了 IE8 的成功身份驗證,它在內部和外部的行為似乎與 Firefox 相同。初始請求得到 401.2,然後發送另一個請求並得到 401.1(挑戰?),然後是 200(成功)。

所以問題似乎是,當從網路外部訪問“Intranet”站點時,IE8 會遇到 401.2,然後在它應該(通過其他瀏覽器的衡量)繼續進行身份驗證過程時死掉。

有人可以驗證我描述的 Fiddler 活動嗎?

在我看來,您似乎成為 IE8 中“錯誤”的受害者,正如在此處向 Microsoft 報告在此處更詳細地討論的那樣

我懷疑如果您使用AdsUtil.vbs腳本將受影響目錄的身份驗證設置為“NTLM”而不是預設的“協商,NTLM”,問題可能會消失。

您可以通過使用 Wireshark(或您最喜歡的嗅探器)監視客戶端電腦並觀察它是否在嘗試訪問該站點時嘗試為域控制器執行 NetBIOS 廣播名稱解析來驗證您是否看到此行為。

我正在討論的 NTAuthenticationProviders 值的一些背景資訊可從 Microsoft KB215383 獲得。對於 IIS6,如果未定義該值,則 IIS 將其視為“協商,NTLM”。我的猜測是你在預設設置下執行。

您可以使用adsutil.vbs腳本(預設情況下安裝在 %SystemDrive%\Inetpub\AdminScripts 中)檢查此值。使用以下命令檢查機器上第一個網站的值(顯然,更改此範例中的路徑以適合您的實際應用程序):

cscript adsutil.vbs GET W3SVC/1/Root/NTAuthenticationProviders

請記住——如果未定義該值,則 IIS6 將使用其編譯的預設設置“協商,NTLM”。

要更改機器上第一個網站根目錄的 NTAuthenticationProviders 值,請使用以下命令:

cscript adsutil.vbs SET W3SVC/1/Root/NTAuthenticationProviders "NTLM"

Microsoft 建議您在設置後通過再次查詢來驗證“接受”的值。

引用自:https://serverfault.com/questions/139099