0
我有一個使用Windows身份驗證的MVC4應用程序。這個應用程序刮擦各種互聯網網站。此應用程序託管在我們的內部網中,需要通過我們的公司代理才能訪問互聯網。通過一些調試,我可以看到我完全通過用戶ID進行身份驗證,並且我正在冒充。我的問題是我不斷收到錯誤The remote server returned an error: (407) Proxy Authentication Required.
。我可以驗證我的代碼是否正常工作,因爲它如預期的那樣工作,如果我爲代理硬編碼我的憑證。使用Windows身份驗證的Web應用程序無法通過代理
var windowsIdentity = (WindowsIdentity) HttpContext.Current.User.Identity;
using (windowsIdentity.Impersonate())
{
var webClient = new WebClient
{
Proxy = new WebProxy(PROXY)
{
Credentials = CredentialCache.DefaultNetworkCredentials
}
};
var str = webClient.DownloadString("http://google.com");
}
使用CredentialCache.DefaultCredentials
也不起作用。爲什麼我不能模擬自己(或正在訪問該站點的人)並使用該用戶對代理進行身份驗證?
Windows身份驗證旨在用於本地內聯網。有一種隱含的依賴關係,即發送的數據包以相同的方式接收。代理可以重新排列數據包的接收方式並使您的請求無效。如果您使用的是任何類型的身份服務器,請求將被拒絕,因爲代理注入頭部的其他請求方/ – rlcrews 2015-02-24 17:01:45
假設代理使用Windows身份驗證,您可能需要啓用委派。這爲服務器提供了特殊的權限,以便它可以通過網絡模擬用戶。您可能還需要配置IIS和/或代理服務器來允許這一點,我不熟悉細節。將代理服務器配置爲允許您的服務器未經身份驗證的訪問幾乎肯定會更容易。 – 2015-02-24 23:24:34