【问题标题】:Disable wcf x509 certificate, using clientCredentialType="UserName"使用 clientCredentialType="UserName" 禁用 wcf x509 证书
【发布时间】:2011-06-29 18:33:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: wcf certificate


    【解决方案1】:

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

    所有默认绑定只允许您在使用 HTTPS(安全模式设置为 TransportWithMessageCredential - 它还需要证书)或在需要服务证书的情况下使用 WS-Security(安全模式)时发送用户名和密码设置为Message)。

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

    【讨论】:

    • 我可以加密用户名/密码,但不使用证书,例如在 md5 中?
    • 没有默认安全性(除非你添加了很多自定义类来支持自定义安全令牌)。您可以使用用户名和散列密码发送自定义 SOAP 标头,但您必须自己处理从客户端传递此标头并验证服务上的凭据。
    • 好的,我生成了客户端/服务器证书,一切正常,但是使用
    • codeproject.com/KB/WCF/9StepsWCF.aspx 我使用本教程做了证书。
    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多