使用clientCredentialType=”禁用wcf x509证书;用户名";

使用clientCredentialType=”禁用wcf x509证书;用户名";,wcf,certificate,Wcf,Certificate,我想检索需要服务操作的用户的用户名和密码。为此,我需要指定以下配置: <binding name="NewBinding0"> <security mode="Message"> <message clientCredentialType="UserName" negotiateServiceCredential="false"

我想检索需要服务操作的用户的用户名和密码。
为此,我需要指定以下配置:

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


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

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

仅当您使用HTTPS(安全模式设置为
TransportWithMessageCredential
-它还需要证书)或在需要服务证书的地方使用WS-security(安全模式设置为
Message
)时,所有默认绑定才允许您发送用户名和密码


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

我可以加密用户名/密码,但不使用证书,例如在md5中?不使用默认安全性(除非您添加大量自定义类以支持自定义安全令牌)。您可以发送带有用户名和哈希密码的自定义SOAP头,但您必须自己处理从客户端传递此头以及验证服务上的凭据。好的,我生成了客户端/服务器证书,所有这些都可以,但我使用本教程生成了证书。