如果我通過使用system.net.credentialcache.defaultcredentials將當前用戶憑證傳遞給webservice,信息將以何種方式傳輸? 我不認爲這將是明文,所以證書必須加密,但他們怎麼樣?System.Net.CredentialCache.DefaultCredentials中的密碼是如何加密的?
回答
這取決於服務器在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
。
- 1. 如何加密Wildfly中的bindCredential密碼?
- 2. 如何加密log4j.properties中的密碼?
- 3. Moodle如何加密密碼?
- 4. 如何加密密碼
- 5. Delphi中的密碼加密
- 6. AngularJS中的密碼加密
- 7. Rails中的密碼加密
- 8. 加密App.config中的密碼
- 9. Jackrabbit中的密碼加密
- 10. joomla中的密碼加密
- 11. 如何解密加密密碼?
- 12. 如何種子加密的密碼
- 13. 如何加密drupal 7的密碼
- 14. 如何在Java中加密RDP密碼
- 15. 如何在AutoMapper 6中加密密碼?
- 16. 如何在Python pysftp中加密密碼?
- 17. 如何在ODI 10g中加密密碼?
- 18. 密鑰是如何形成密碼的?
- 19. 如何使用javaScrypt解密localStorage中的加密密碼
- 20. 如何解密Node.js中的加密密碼
- 21. cassandra中的密鑰庫密碼如何加密?
- 22. 如何解密md5()中的加密密碼?
- 23. 如何加密JConsole密碼文件的密碼
- 24. 加密密碼的密碼長度
- 25. DPAPI用於加密的密碼是誰?
- 26. 在VBA密碼框中加密密碼
- 27. 未加密密碼的加密密碼用戶羣
- 28. 加密密碼以匹配存儲的加密密碼。
- 29. 加密密碼
- 30. 密碼加密
嗯,好的...目標是使用Windows集成身份驗證,以便用戶不必提供憑據。必須傳遞用戶的登錄憑證以使用Web服務(它的Tomcat)必須使用DC進行身份驗證...這種方式的憑證是否也會以明文形式傳遞?什麼到達Web服務? – Marcus 2009-06-02 10:17:16