2011-06-29 71 views
0

我想检索需要服务操作的用户的用户名和密码。
为此,我需要指定以下配置:使用clientCredentialType =“UserName”禁用wcf x509证书

   <binding name="NewBinding0"> 
       <security mode="Message"> 
        <message clientCredentialType="UserName"    negotiateServiceCredential="false" 
         establishSecurityContext="false" /> 
       </security> 
      </binding> 

现在需要的X509证书。我可以禁用它,或修改安全模式或消息凭证类型,但提供相同的功能?

回答

1

当您指定消息安全性时,它总是期望服务证书。原因是用户名和密码应该通过安全通道发送,否则密码将作为纯文本发送,网络上的每个人都可以看到。

所有默认绑定都将允许您仅在您使用HTTPS(安全模式设置为TransportWithMessageCredential - 它还需要证书)时发送用户名和密码,或者如果您正在使用需要服务证书的WS-Security(安全模式设置到Message)。

在WCF 4中(并且在早期版本中使用特殊KB补丁)you can create custom binding其中用户名和密码可以通过不安全的通道发送,但几乎与无安全通道相同。只有在您的频道使用VPN等其他基础设施进行安全保护时才应使用它。

+0

我可以加密用户名/密码,但不使用证书,例如在md5中? – croisharp

+0

否,默认安全性(除非您添加大量自定义类以支持自定义安全性令牌)。您可以使用用户名和哈希密码发送自定义SOAP头,但您必须处理从客户端传递此头并验证服务上的凭据。 –

+0

好吧,我生成的客户端/服务器证书,所有的作品,但 <消息clientCredentialType =“证书”.. 没有显示corect用户名。当我设置clientCredentialType为UserName,然后我收到一个错误。 – croisharp