如果我通过使用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. 如何加密密码
- 2. 加密App.config中的密码
- 3. AngularJS中的密码加密
- 4. Delphi中的密码加密
- 5. Jackrabbit中的密码加密
- 6. 如何加密drupal 7的密码
- 7. 如何在AutoMapper 6中加密密码?
- 8. 如何在Java中加密RDP密码
- 9. 如何在Python pysftp中加密密码?
- 10. 密钥是如何形成密码的?
- 11. cassandra中的密钥库密码如何加密?
- 12. 如何解密Node.js中的加密密码
- 13. 如何加密JConsole密码文件的密码
- 14. DPAPI用于加密的密码是谁?
- 15. 在VBA密码框中加密密码
- 16. 未加密密码的加密密码用户群
- 17. 加密密码
- 18. 加密密码
- 19. 密码加密
- 20. 加密密码
- 21. 加密密码
- 22. 密码加密
- 23. 密码加密
- 24. 密码加密
- 25. s3cmd与OpenPGP加密密钥 - 这是一个密码或密码?
- 26. 如何保护加密密码即使是最弱的一个?
- 27. 如何在C#中的cookies中存储加密的密码?
- 28. 用法:“EncryptUtil encrypt”密码密码:要加密的明文密码
- 29. 加密的NodeJS密码
- 30. 散列密码的加密?
嗯,好的...目标是使用Windows集成身份验证,以便用户不必提供凭据。必须传递用户的登录凭证以使用Web服务(它的Tomcat)必须使用DC进行身份验证...这种方式的凭证是否也会以明文形式传递?什么到达Web服务? – Marcus 2009-06-02 10:17:16