目前,我们在Azure上运行UI Web角色和Web服务Web角色(WCF REST)。每个角色包含2个实例(用于负载平衡和满足SLA要求)。 UI Web角色和Web服务Web角色属于同一订阅,但在不同的部署中。我们不希望合并代码库(可维护性等)。所以UI层位于xyz.cloudapp.net上,Web服务层位于abc.cloudapp.net上。
目前,要求是使Web服务Web角色成为内部端点,即只能由UI层访问。有关配置内部端点并从不同部署中访问它的文献不是很清楚。
我假设两个不同的角色需要成为单个部署的一部分才能实现。这可以在不影响部署的情况下完成吗?任何指向正确方向的人都会非常感激。
答案 0 :(得分:2)
内部端点只能在单个部署中访问,并且不通过负载均衡器进行路由(因此,如果您在内部端点上可以访问2个wcf服务实例,则需要在实例之间分配调用)。当然,这需要您将Web角色和wcf Web角色放在同一部署中。
您可能需要考虑使用服务总线,以便从Web角色实例中获取wcf服务的安全方法。或者......通过输入端点公开wcf服务,但保护服务。
答案 1 :(得分:1)
您是否考虑过使用ACS( Access Control Services )来限制对WCF端点的访问using claims-based authentication?
您可以提供多种保护方案via WCF bindings。
Internal Endpoints只能与同一部署中的角色进行通信。如果您有2个单独的部署( abc.cloudapp.net
和xyz.cloudapp.net
,则内部端点将无法帮助您)。
答案 2 :(得分:1)
有一种方法我喜欢称之为满足您需求的虚拟DMZ:http://brentdacodemonkey.wordpress.com/?s=virtual+dmz
它利用ACS和WCF绑定来允许您为输入端点创建访问控制(然后对其进行负载平衡)。当然,如果你不想要强大的东西,你可以只使用标准的旧WCF相互身份验证方案。
那就是说,大卫提出了一个很好的观点。只能使用单个部署的服务访问内部端点。这是因为该服务代表隔离边界(想想虚拟局域网分支),并且唯一的输入端点可以从该边界外部进行处理。