我有以下配置:的ASPX頁面請求雙,NTLM身份驗證請求失敗
- IIS 7.5
- 網站 - 身份驗證:所有選項禁用,啓用僅適用於Windows 認證。
- 應用程序B(作爲A的子Web應用程序):身份驗證:啓用了匿名,啓用了基本功能,禁用了Windows身份驗證。
這兩個應用程序運行ASP.NET 4,單獨的應用程序池,經典模式。
現在,應用程序B有這種奇怪的行爲,我注意到在提琴手。 對於一個aspx頁面的每個請求,它顯示了兩個條目: 第一個請求:
GET https://example.com/page.aspx HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: https://example.com/
Accept-Language: en-GB
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; Zune 4.7)
Cookie: ASP.NET_SessionId=123456789
Accept-Encoding: gzip, deflate
Host: example.com
Authorization: NTLM DFGHJKLDRFGHNXAAAAA==
Connection: Keep-Alive
Cache-Control: no-cache
Content-Length: 0
作爲迴應,我得到一個401之後,第二個請求是針對同一個資源:
GET https://example.com/page.aspx HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: https://example.com/
Accept-Language: en-GB
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; Zune 4.7)
Authorization: Basic ZXVyasdasdasdasdasdasd=
Accept-Encoding: gzip, deflate
Host: example.com
Connection: Keep-Alive
Cache-Control: no-cache
Content-Length: 0
Cookie: ASP.NET_SessionId=lasdasdasdasdasdasdasd
第二個是狀態200可以。
區別在於「授權」行中,第一個顯示NTLM(給401訪問被拒絕)有時會導致JavaScript的意外行爲,例如,與更新面板(Sys.WebForms.PageRequestManagerParserErrorException)。
我錯過了什麼?如何設置IIS(或webapp)不使這第一個「NTLM」請求? 謝謝你的幫助。
編輯:另一個有趣的問題,我注意到:在同一個環境中,我有第二套這些應用程序(只綁定到另一個數據庫)。在此集中,應用程序A啓用了匿名身份驗證,啓用了窗體並禁用了窗口。應用B具有與第一組相同的設置。在這種情況下,沒有失敗的請求(401)。一切順利。
您聲明應用程序B是應用程序A的「子應用程序」 - 應用程序B實際上是應用程序A的子目錄嗎? – kpcrash 2012-03-27 15:47:08
@kpcrash它是IIS(虛擬目錄)中的一個子應用程序,在文件系統上有單獨的目錄。 – lukasz 2012-03-27 17:05:40
有人問,因爲除非有什麼變化,否則該子目錄會從安全性方面繼承父項。所以首先嚐試父母的安全方法,然後實現子應用程序設置並嘗試 - 將子應用程序移動到其自己的應用程序文件夾的想法? – kpcrash 2012-03-27 17:17:45