2009-06-02 17 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