2017-06-28 117 views
0

我正在將ASP.NET WebForm 2.0網站從Windows Server 2003(IIS 6)遷移到Windows Server 2012R2(IIS 8.5)。IIS 8.5中的Windows身份驗證 - 間歇性404錯誤

該網站對內部用戶使用Windows身份驗證。

在IIS 6中,Windows身份驗證完美工作。

在IIS 8.5,有時Windows身份驗證工作,用戶可以看到該網站,但有時,Windows身份驗證並不在所有的工作,用戶看到404錯誤(「該網頁無法找到」顯示錯誤)。

我使用Fiddler來觀看網站流量:

  • 每當Windows身份驗證工作,我看到的Web請求有Authorization頭如下: 授權:協商TlRMTVNTUAADAAAAGAAYAIAAA ..................。 (650個字符)

  • 每當Windows身份驗證不工作,我看到的Web請求要麼沒有Authorization頭或有授權頭如下: 授權:協商TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw ==(80個字符)

你能建議如何解決這個問題嗎? 如何使Windows身份驗證在IIS 8.5中始終如一地工作。

我也注意到有2個供應商在Windows身份驗證在IIS中設置: - 協商 - NTML

我重新排列這些供應商,但仍然有同樣的問題。

+1

該網站是否是內聯網?對於你的兩個例子,兩臺機器是相同的(例如Win 10 x64,IE 11),還是有區別? – tgolisch

+1

是第二個選項,您的意思是「每當Windows身份驗證不起作用」 –

+0

@RohithRajan:是的,我已更新我的問題。謝謝。 –

回答

3

的協商頭自帶小是一個稱爲NTLM預驗證

Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==

特徵的一部分,所以這是一個IE客戶端的功能,使客戶端只向auth報頭的一部分作爲NTLM的一部分預驗證。這article談論這一點。我也看到你的網站只使用kerberos(NTLM令牌從TlRMTV開始......)。

從IIS服務器端,可以禁用內核模式 認證並驗證其是否工作正常

  • 在IIS管理器中訪問網站
  • 打開驗證
  • 點擊Windows驗證
  • 從操作窗格(右側) - 打開Adva NCED設置
  • 的Un檢查內核模式身份驗證disable kernel mode authentication
  • 重新啓動IIS

這是非常奇怪的,你得到404錯誤though.Do你在你的應用程序的任何要求,即它僅適用於Kerberos的(Kerberos的代表團,雙跳等)?通常情況下你的應用程序應該有一個Kerberos令牌,除非一些基本的東西是fine

編輯:

如之前懷疑,它看起來像網站使用NTLM,而不是去上的Kerberos。這是因爲kerberos無法使用外部域或IP地址。所以它會回退到NTLM,並且NTLM IE可能會使用NTLM預授權。我仍然不知道404錯誤,通常你應該得到401錯誤。獲得404可能是應用程序特定的。

+0

謝謝Rohith。經過3天的調查,我們的網絡團隊已經意識到這個網站有兩個綁定:一個綁定到內部IP地址,一個綁定到外部IP地址。他們刪除了與外部IP地址綁定,並且該網站與Windows身份驗證完美結合。 –

+0

很高興知道,感謝您的更新。我有一些理論,會更新答案 –

0

3天后的調查,我們的網絡團隊已經意識到,這個網站有2個綁定在IIS:

  • 一個綁定到內部IP地址
  • 一個綁定到外部IP地址。

他們已經拆除綁定到外部IP地址和網站使用Windows身份驗證完美。