【问题标题】:WCF security with load balancer负载均衡器的 WCF 安全性
【发布时间】:2013-09-04 05:46:37
【问题描述】:

我们需要创建一个 WCF 服务 (.NET 4.0),供我们组织外部的客户使用。

情况是我们有两个服务器位于终止 SSL 的负载平衡器后面。这就是让我感到困惑的地方。 我们可以并且应该如何处理身份验证?

之前关于 WCF 的经验只是关于内部使用的服务。如果我理解正确,我们应该使用 basicHttpBinding 来保证与基于 Java 的客户端的互操作性。我不知道这是否是基于 JAX-WS 的客户端的问题。

只有这一个客户会使用该服务。

  • 我们需要以某种方式确保调用者经过身份验证才能使用 系统
  • 确保消息在公网移动时已加密

到目前为止,我发现的最好的文章是 http://devproconnections.com/net-framework/wcf-and-ssl-processing-load-balancers

关于如何执行此操作的建议很少。

可以为基本身份验证配置 WCF 服务并通过 HTTP 以明文形式接收凭据。这可以工作;但是,它会阻止在消息中传递凭据,以及使用更有趣的凭据(例如颁发的令牌)。

我们在托管服务的网站上使用表单身份验证。我认为制作服务然后使用基本身份验证并不容易,甚至不可能。

可以将 WCF 服务配置为假装存在传输安全性,以便运行时允许在没有传输或消息保护的情况下接收消息凭据

这是要走的路吗?这是否适用于 basicHttpBinding?

【问题讨论】:

    标签: wcf web-services wcf-binding wcf-security


    【解决方案1】:

    客户端和服务器绑定会有所不同。客户端绑定将在 eitehr 消息中使用用户名身份验证或具有传输安全性 (ssl) 的传输级别:

       <bindings>
            <basicHttpBinding>
                <binding name="NewBinding0">
                    <security mode="Message" />
                </binding>
            </basicHttpBinding>
        </bindings>
    

    那么服务器配置将使用相同的配置但没有传输安全性。如果您选择使用消息安全,请查看WCF ClearUsernameBinding。如果您使用 trasnport 安全性(基本 http),则设置 mode="TransportCredentialOnly"。

    【讨论】:

    • 谢谢。我正在尝试 ClearUserNameBinding 方法,但我显然遗漏了一些东西。我让它在本地工作。在负载均衡器后面的测试环境中运行服务时,所有请求似乎都转到“您已创建服务”页面,而不是调用操作。这发生在我自己的服务和包含的测试服务中。有什么想法吗?
    • 我认为这与 LB 配置有关。检查它是否确实向正确的服务器 url 发送了一些东西。还记得只有服务器需要使用CUB,客户端可以使用常规的WCF绑定
    • 问题是/是客户端尝试使用 http 端点,手动将其更改为 https,现在它正在工作。当然,如果我知道如何以不需要手动编辑端点地址的方式进行配置,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2014-03-09
    • 2018-05-19
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多