【问题标题】:WCF: Use a custom UserNamePasswordValidationMode without SSL CertificateWCF:使用没有 SSL 证书的自定义 UserNamePasswordValidationMode
【发布时间】:2011-11-10 08:57:51
【问题描述】:

对于客户,我必须使用 WCF 在客户端和服务器应用程序之间进行通信。

我的应用程序使用 WSHttpBinding 进行通信,但现在,客户没有安装任何 SSL 证书,因为:

  • 服务器只能通过 VPN 访问,因此通信已经加密
  • 他们的计算机不在域中,因此无法使用域 CA
  • 服务器的名称没有公共 IP,因此他们无法为此 IP 购买 SSL 证书

所以我开始研究如何不使用任何 SSL 证书,但遇到了一些问题:

我看到我应该为安全模式使用“TransportCredentialOnly”设置,但该设置不适用于“WsHttpBinding”。所以我决定使用basicHttpBinding,它有这个选项,但似乎basicHttpBinding没有提供使用CustomUserNamePasswordValidator的可能性。

那么我该怎么做呢?我找到的每个搜索结果要么使用 SSL 证书,要么没有 customUserNameValidator。

非常感谢您的帮助。

【问题讨论】:

  • 自签名证书有用吗?
  • 如何托管 WCF 服务?信息系统?自托管?
  • @Jason Rowe:不,因为他们不能在每台计算机上都添加这个:(
  • @Yahia:应用程序托管在 WCF 应用程序中

标签: c# wcf ssl wcf-binding wcf-security


【解决方案1】:

这是非常罕见的情况,发送不安全的用户名和密码是有意义的。您需要为此自定义绑定,因为默认绑定不允许这样做。 This answer 包含两个可以使用的选项。请注意,第一个选项将允许您通过不安全的传输发送纯文本用户名和密码,但它会破坏 WSDL 生成(这是 WCF 中的一个错误)。

【讨论】:

  • 是的,我决定使用 ClearUsernameBinding(webservices20.blogspot.com/2008/11/…),但是我必须修改很多东西才能让它工作(它传输了很多文件)。遗憾的是 MS 不允许开发人员决定它需要什么样的安全性,我不明白为什么不使用 SSL 证书和使用基本身份验证是可能的,如果使用没有 SSL 的自定义身份验证不是。应该鼓励开发人员使用 SSL,但他应该有一种不使用 ssl 的简单方法来开发其应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 2014-02-19
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多