访问绑定到公共IP地址的自托管服务

时间:2015-01-14 18:16:31

标签: c# wcf amazon-web-services

我们正在尝试在AWS实例上自我托管(而不是IIS)的WCF服务。在同一台机器上有一个STS和一个服务主机作为单独的Windows服务运行。用户应该能够从不同的地理位置/域访问该服务,因此我们不会使用Windows安全性。

端点和基址在app.config中定义,在启动时读取。使用的是IP地址,没有主机名。

我们遇到的问题是无法从外部源访问该服务(禁用防火墙)。如果使用公共IP地址,服务主机将不会启动,因此服务被配置为使用私有IP地址,但似乎私有IP地址被传递回客户端,这显然不起作用。我的问题是,我们应该考虑哪些配置更改才能使服务可访问?我们需要自定义元数据提供程序吗?

服务器已安装证书。传输数据有一些安全要求,因此使用了ws2007HttpBindingws2007FederationHttpBindingwsHttpBindingws2007HttpBinding

一些例子:

绑定到公共AWS主机名(ec2-54-xxx-xxx-xxx.compute-1.amazonaws.com),这与绑定到公共IP地址相同 - STS启动但服务主机失败,

System.ServiceModel.Security.SecurityNegotiationException: The caller was not authenticated by the service. ---> System.ServiceModel.FaultException: The request for security token could not be satisfied because authentication failed.

公共IP地址是否存在信任问题?

绑定到私有IP地址:

There was no endpoint listening at https://172.xxx.xxx.xxx:6040/MySTS/UsernameOverTransport that could accept the message

这是有道理的,因为私有IP地址是私有的。

我尝试使用hostNameComparisonMode="Exact / WeakWildcard / StrongWildcard"配置绑定,但这似乎没有什么区别。同时确保<message> establishSecurityContext="false"没有{{1}}也没有变化。

0 个答案:

没有答案