2009-06-02 34 views

回答

1

這取決於服務器在HEAD響應中的請求。例如,如果我對您的Web服務執行HEAD請求,並且其響應中的一個http標題是「WWW-Authenticate:NTLM」,則存儲在DefaultCredentials中的憑證將使用NTLM進行加密,然後發送出去與完整的GET/POST/PUT /無論如何。爲確保這種情況發生,您需要確保您的Web服務器已配置爲請求NTLM身份驗證。在IIS中,這是選擇「集成Windows身份驗證」的情況。我不確定TomCat,但this post看起來很貼切。但是,如果您的Web服務器針對特定資源回覆「WWW-Authenticate:Basic」(這將涉及以明文形式發送信用證,以base64編碼(注:而不是加密)),您將得到一個ArgumentException,因爲它被認爲是一個安全例外,可以通過基本身份驗證發送您的賬戶憑證。

Web服務器也可以配置爲接受多種身份驗證方法,但您應該始終準備接受這些方法中最弱的方法,因此提供基本身份驗證作爲「回退」意味着您的某些用戶可能會很好以明文形式發送憑證。

瀏覽器通常會選擇向它提供最強的方法,我懷疑(但不知道某些)的.NET庫的行爲相同的方式。

編輯

只要你的web服務器只有請求NTLM爲Web服務,你可以肯定的是明文任何明智的客戶端將不會發送憑據。在.net框架中使用net類,您可以確定,如果您使用DefaultCredentials,並且不自己手動注入基本auth頭,則您的憑證將使用NTLM加密發送。

他們的憑據將到達服務器作爲一個大的加密混亂,任何人,但Web服務器,誰將會解密他們看到,他們包括在當前登錄用戶的用戶名,密碼和域名。

DefaultCredentials將發送的憑據取決於所請求的應用程序類型DefaultCredentails。如果它是在用戶帳戶下運行的客戶端應用程序,則憑據將是該用戶的憑據。如果它是一個與您的Web服務進行通信的ASP.NET應用程序,它將使用應用程序池所運行的帳戶的憑據,默認情況下這是NETWORK_SERVICE

+0

嗯,好的...目標是使用Windows集成身份驗證,以便用戶不必提供憑據。必須傳遞用戶的登錄憑證以使用Web服務(它的Tomcat)必須使用DC進行身份驗證...這種方式的憑證是否也會以明文形式傳遞?什麼到達Web服務? – Marcus 2009-06-02 10:17:16