正确理解具有相同主机/不同端口的CORS&安全

时间:2015-03-13 14:13:37

标签: c# wcf ssl iis-7.5 cors

我没有做太多的客户端网络编程,所以我试图把握这个概念与我的具体情况有关。

我在50000s的端口上运行RESTful WCF服务。另外,我有一堆用HTML5 / CSS3 / JavaScript编写的Web表单(不是ASP WebForms),它们对这个WCF服务进行AJAX调用。 Web表单托管在同一主机上,但使用的是端口80.Web表单发出的AJAX调用只是GET个请求。

此外,我有一个第三方云托管应用程序,它位于一个完全不同的位置(不同的主机),它也需要调用WCF服务。此通讯正在执行POST s& PUT到WCF服务。

显然,来自第三方托管云应用程序的调用是跨域的。从我的研究看来,不同的端口实际上是不同的起源。

我知道安全& CORS是不同的概念,但这是我想要完成的事情,我需要更好地理解所有这些是如何工作的:
现在我允许所有跨域请求,一切正常,但是我想限制它以提高安全性,然后最终使用webforms& amp ;;设置带有传输安全性的HTTPS。 WCF服务使用相同的证书。第三方云服务托管应用程序仍然需要能够与WCF服务进行通信,因此我需要允许它以不同方式进行身份验证,以便通过传递密钥来完成,因为一切都是服务器端仅

这整个沟通的三角形'对我来说感觉很模糊,我希望SO是我发布这个问题的正确位置,因为它不是直接与代码相关的。

  1. 上面描述的WCF - Web表单情况是否被视为跨域?
  2. A)如果上述内容不是跨域原因,那么我是否只需要在我的web.config中传递Access-Control-Allow-Origin: 'https://my-cloud-host'

    B)如果我明白,只需回显标题中允许的来源。在这种情况下,我在IIS中为Access-Control-Allow-Origin设置了什么(如果有的话)?如果不允许,我会回应什么,只是原始来源?
  3. 如果它们托管在不同的端口上,我的想法是否可以使用相同的证书进行相互SSL身份验证?这会阻止云服务与WCF服务通信,还是会让第二个端点允许这样做?
  4. 我是否会失去理智?我对这件事感到很困惑。

1 个答案:

答案 0 :(得分:1)

  1. 是。在除IE之外的所有主流浏览器中,不同的端口被认为是另一个来源。
  2. A)是正确的。您只需要允许端口80来源发送请求。
  3. 我不确定。我倾向于认为SSL是端口感知的,并且您不能在不同的端口上使用相同的证书。
  4. 您可以阅读this excellent article让您的大脑休息一下。