【问题标题】:Wcf security when passing through to a webservice (.asmx)传递到 Web 服务 (.asmx) 时的 Wcf 安全性
【发布时间】:2012-07-12 09:39:25
【问题描述】:

场景是我们有一个 WCF 服务,它使用我们构建的内部 Web 服务中的方法。

WCF 服务非常轻量级。

我们希望保护此 WCF 服务,以便只有某些客户端可以使用它(它当前位于面向公众的服务器上)。

我们没有能力在这个面向公众的服务器上安装证书,所以我们想知道最好使用的安全模型。

理想的想法是,它可以通过某种方式进行配置,以便客户端使用 WCF 服务简单地“传递”给内部 Web 服务的证书,因为这是在我们控制的服务器上,然后进行证书身份验证。

这可能吗..?如果没有,我们可以采用其他任何安全选项吗?

提前致谢。

【问题讨论】:

  • 据我所知,您面向公众的 Web 服务器必须“接受”客户端证书。否则,客户端证书不可用于 WCF 行为(用于转发)。
  • 那么这是否意味着无法设置公共服务器上的 IIS,因此客户端传递的证书“未检查”并简单地转发到内部服务器上?
  • 不确定,我认为如果 IIS 处理它会在客户端证书上转发的请求,但不要引用我的话。但是,如果你有一个反向代理而不是 IIS,那么它只会转发请求。

标签: c# .net wcf security


【解决方案1】:

使用消息头并检查其中客户端的凭据的解决方法。也就是说,您可以在消息头中传递用户名和密码,在 wcf 服务上检查它,如果可以很好地处理请求,否则丢弃它。

【讨论】:

    【解决方案2】:

    我认为您必须详细说明自己的自定义安全模型。

    要解决的主要问题是如何在您和客户之间共享“密钥”。 您无法安装证书,因此您必须将密钥存储在其他地方,例如web.config 内 ... 并以安全的方式将其分发给客户端。

    您可以使用此密钥对消息进行签名或加密;您还可以使用加密密码的标准架构。

    还要检查您是否可以使用某些 WS-Security 功能!!!

    此外,还会检查 .Net Framework 提供的绑定身份验证和保护架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多