Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
通过HTTPS的WCF->;代理->;超文本传输协议_Wcf_Web Services_Ssl_Https_Proxy - Fatal编程技术网

通过HTTPS的WCF->;代理->;超文本传输协议

通过HTTPS的WCF->;代理->;超文本传输协议,wcf,web-services,ssl,https,proxy,Wcf,Web Services,Ssl,Https,Proxy,我们有一个解决方案,其中一边是WCF Web服务,另一边是智能客户端 通常,我们在Web服务器上为Web服务设置HTTPS,以便客户端和服务器之间的通信通过HTTPS进行 但是,我们的一个客户在这两者之间有一个代理服务器,它将传入的HTTPS请求从其SSL负载中剥离,并将普通HTTP请求转发到Web服务器: 客户端>HTTPS>代理>HTTP>Web服务器 问题是我们使用WsHttpBinding允许我们通过SSL与WCF通信。通常,我们在客户端和服务器上都使用该绑定,并且没有问题 但是由于we

我们有一个解决方案,其中一边是WCF Web服务,另一边是智能客户端

通常,我们在Web服务器上为Web服务设置HTTPS,以便客户端和服务器之间的通信通过HTTPS进行

但是,我们的一个客户在这两者之间有一个代理服务器,它将传入的HTTPS请求从其SSL负载中剥离,并将普通HTTP请求转发到Web服务器:

客户端>HTTPS>代理>HTTP>Web服务器

问题是我们使用WsHttpBinding允许我们通过SSL与WCF通信。通常,我们在客户端和服务器上都使用该绑定,并且没有问题

但是由于webservice实际上接收HTTP请求,我们不能使用WsHttpBinding(需要HTTPS)。但是我们必须从客户端使用HTTPS

但当然,WCF要求客户端和服务器之间的绑定匹配。所以我们有点卡住了,我找不到解决这个问题的好方法:

  • 出于安全原因,我们无法将客户端设置为使用HTTP
  • 我们可以将服务设置为接受HTTP请求,但客户端将无法与其通信

是否有某种设置可以满足此要求?

使用从wshttpbinding获取自定义绑定。然后将自定义绑定从https更改为http元素。

如何确保请求到达web服务器,并且它没有https,只有http?当你说智能客户端时,它是什么?浏览器还是别的什么?我可以在Web服务器上看到通过HTTP传入的请求,我也可以在WCF日志中看到报告错误的URL,即HTTP。此外,代理服务器的人员确认HTTPS被剥离为HTTP,并通过HTTP转发到Web服务器。智能客户端是使用ClickOnce部署的.NET Windows窗体应用程序。因此,连接到WCF服务的是windows窗体应用程序。谢谢,在我尝试之后,我会给你反馈。已经有一些问题了:我在客户端和服务上都使用这个定制绑定吗?然后我是否将客户端设置为HTTPS,将服务设置为HTTP?(看来这可能行不通)。我无法将客户端设置为HTTP,因为它们拒绝传入的HTTP连接,此外,我认为我的自定义用户名/密码将是可读的(使用自定义成员资格提供程序的用户名凭据类型)。仅在服务上使用它,因为客户端已经很好了。客户端保持https和服务http。这将起作用,因为您在中间有一个卸载SSL的服务。它现在抱怨:“合同配置了一个需要传输级完整性和机密性的认证模式。然而,传输不能提供完整性和机密性。”这是因为认证模式是UsReMeNeUnToMul送。我不确定我还可以使用哪个选项,因为在客户端我们使用UserName身份验证()。使用CUB我想我只是把自己弄糊涂了(或者WCF把我弄糊涂了),但我之前在CUB做过loko。我遇到的问题是它需要HTTP(不接受HTTPS)。但是我必须将客户端和服务器都设置为CUB绑定。所以我又被卡住了。目前,我很难为这种情况设置测试环境,而且客户同意不再进行HTTPS剥离,因此我恐怕不能保证在您的帮助下我能够完全解决它(即使它可能包含解决方案!)。不过我会尽力的。