2009-09-08 69 views
0

我們需要下載和解析一個特定的安全網頁。從這個解析的數據中,我們需要做很多其他的事情......所謂的「多重身份驗證」部分如下所示:.NET - 下載多重認證的網頁

如果您已經在IIS上託管網站並打開了集成安全功能(關閉匿名瀏覽功能)後,您會注意到,您輸入網址到該網頁的時間窗口會彈出瀏覽器,詢問您是否擁有Windows網絡憑證......此特定外部網頁有類似於那。

奇怪的是它顯示窗口兩次。當我提供我的憑證兩次時,該頁面纔會正確加載。是的,我必須提供我的憑據兩次 !!!我沒有遇到過這種情況。我確實注意到了彈出窗口的標題,並認爲這是我必須提供憑據的網址。

要下載網頁,我使用HttpWebRequest & HttpWebResponse對象。對於Web請求對象,我必須適當地設置憑據。爲此,我創建了一個CredentialsCache對象並添加了兩個憑據(示例代碼爲Ref http://msdn.microsoft.com/en-us/library/system.net.credentialcache.aspx)。仍然沒有運氣。

有沒有人遇到過這種情況?

回答

1

奇怪的是它顯示窗口兩次。當我提供我的憑證兩次時,頁面纔會正確加載。是的,我必須提供我的憑證兩次!

從瀏覽器端的東西這聽起來像一個簡單的問題與HTML。我在安全網站上經常看到這一點,這些網站與完全限定的網址不一致。例如,如果您訪問https://mywebsite.com/default.html,並在該HTML中有一個圖片鏈接,如< img src =「http://MyWebsite.com/picture.jpg」>,那麼您將得到兩個提示。在這種情況下,原因是URL的區分大小寫,但它可能會使用完全不同的名稱,如「www.mywebsite.com」。

另一種可能性是服務器端重定向到另一個安全網址。您可以通過將HttpWebRequest.AllowAutoRedirect設置爲false,然後檢查重定向的響應標頭來了解是否發生了這種情況。

只是一個想法,可能是什麼原因造成這種情況?這很可能對你的環境非常具體,因此很難提供幫助。

+0

還檢查是否有重定向發生。也許你實際上訪問了兩個不同的網站。 – 2009-09-08 23:55:13

0

要添加到csharptest指出的內容,我會查看Fiddler中的流量(或者任何你喜歡的http調試)來試着看看發生了什麼。