2011-01-24 97 views
3

我的團隊最近在我們的某些服務代碼中發現了一個錯誤,例如使用匿名NTLM SID(而不是與HTTP匿名身份驗證相同;是一個成功的NTLM身份驗證交換,導致匿名SID)在被拒絕時被允許繼續。我們通過檢查WindowsIdentity.IsAnonymous屬性來解決問題,但我想爲這種情況編寫一個自動化測試,所以我們再也不會遇到這個問題。如何使用HttpWebRequest對匿名NTLM進行身份驗證HTTP請求

這導致我的問題。我需要使用HttpWebRequest或Microsoft.HttpClient,通過NTLM身份驗證作爲匿名SID HTTP GET請求到特定的URL。到目前爲止,我能做到這一點的唯一方法是將客戶端代碼作爲LocalSystem運行;由於顯而易見的原因,這對我們的自動化測試製度來說並不理想

我已經試過這樣:

using (WindowsIdentity.GetAnonymous().Impersonate()) { 
    //Make HTTP request here, with UseDefaultCredentials = true 
} 

但冒充拋出一個異常,表明該匿名令牌則無法模擬。

還有其他想法嗎?

回答

0

我想你只需要設置UseDefaultCredentials爲false:似乎

request.Credentials = null; 
request.UseDefaultCredentials = false; 
+0

這不工作。我寫了一個測試,並使用Fiddler,我可以看到它生成的HTTP請求。它不使用帶有匿名令牌的NTLM,而是使HTTP客戶端不使用身份驗證,所以當服務器發回NTLM質詢時,客戶端會放棄。 – anelson 2011-01-25 16:56:38

相關問題