Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF:使用没有SSL证书的自定义用户名PasswordValidationMode_C#_Wcf_Ssl_Wcf Binding_Wcf Security - Fatal编程技术网

C# WCF:使用没有SSL证书的自定义用户名PasswordValidationMode

C# WCF:使用没有SSL证书的自定义用户名PasswordValidationMode,c#,wcf,ssl,wcf-binding,wcf-security,C#,Wcf,Ssl,Wcf Binding,Wcf Security,对于客户,我必须使用WCF在客户机和服务器应用程序之间进行通信 我的应用程序使用WSHttpBinding进行通信,但现在,客户不需要安装任何SSL证书,因为: 服务器只能通过VPN访问,因此通信已经加密 他们的计算机不在域中,因此无法使用域CA 服务器名称没有公共IP,因此他们无法为此IP购买SSL证书 因此,我开始研究如何不使用任何SSL证书,但我遇到了一些问题: 我看到应该为安全模式使用“TransportCredentialOnly”设置,但此设置不适用于“WsHttpBinding

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

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

  • 服务器只能通过VPN访问,因此通信已经加密
  • 他们的计算机不在域中,因此无法使用域CA
  • 服务器名称没有公共IP,因此他们无法为此IP购买SSL证书
因此,我开始研究如何不使用任何SSL证书,但我遇到了一些问题:

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

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


非常感谢您的帮助。

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

自签名证书可以工作吗?WCF服务是如何托管的?IIS?自我托管?@Jason Rowe:不,因为他们无法在每台计算机上添加此功能:(@Yahia:该应用程序托管在WCF应用程序中,我决定使用ClearUsernameBinding(),但我必须修改很多东西才能使其正常工作(它传输很多文件)。令人遗憾的是,MS不允许开发人员决定它需要什么样的安全性,我不明白为什么不使用SSL证书和使用基本身份验证是可能的,如果使用自定义身份验证而不使用SSL的话。应该鼓励开发人员使用SSL,但他应该有一个简单的方法来开发没有SSL的应用程序。