【发布时间】:2012-03-14 20:04:35
【问题描述】:
这是一个架构问题 - 我希望这是正确的堆栈交换 - 这些似乎没有一个自然的家......
我工作的系统分布在数据中心内 - DMZ 中的 Web 服务器然后调用安全区域中的 Web 服务(通过防火墙)以访问数据。这当前使用带有 WSE 的 asmx 服务,在 SOAP 标头中传递用户名和密码凭据。这些是通过未加密的。有人认为这提供了某种安全措施(互联网 DMZ 服务器上的攻击者无法访问从内部网 DMZ 服务器访问的服务的凭据)。
我们希望转向使用 WCF,但仍坚持使用 Web 服务。我们希望使用 wsHttpBinding 来实现与其他客户端的最佳互操作性并符合标准。继续使用用户名身份验证,这似乎要求使用 SSL 或消息加密,对于很多人来说,在我们控制两个端点的我们自己的数据中心内加密连接似乎有点矫枉过正。
我很想知道这是否是其他人所做的以及我们有哪些替代方案。我已经考虑过(并排除了以下几个)
- SecurityMode = None - 不使用任何凭据。我们的安全人员对此并不满意,因为外部网络服务器上的攻击者可以访问他们喜欢的任何服务
- 使用 BasicHttpBinding - 我认为这可以配置为使用 TransportCredentialOnly 传递未加密的用户凭据。但是,有点担心 BasicHttpBinding 是一种传统方法,与其他技术的互操作性较差
- 使用Clear Username Binding - 但是,这是开源的,我的组织出于法律原因不想接近开源
- 接受即使在数据中心内我们也必须转移到加密消息
- 更改为使用不同的身份验证类型,例如Windows 凭据 - 担心这可能会对我们当前操作这些服务的方式以及我们是否可以从 DMZ 访问目录服务器产生重大变化。
任何关于其他人如何在具有安全区域的数据中心内使用 WCF 的想法将不胜感激
【问题讨论】:
-
我对 WCF 安全性的了解还不够,无法回答您的所有问题,但我知道您可以在哪里找到!查看 Juval Lowy 的 Programming WCF 服务的第 10 章。这就是 WCF 的圣经,第 10 章涵盖了您想了解的有关 WCF 安全性的所有内容。
-
感谢您的评论。有趣的是,我已经有了那本书。 IIRC Intranet 场景假设一个“平面”网络,客户端和服务器都在一个没有防火墙/网络分区等的网络上。因此,建议使用诸如 netTCP 之类的绑定,而不是我继承的防火墙友好 Web 服务方法。不过周一我会重读一遍(在我工作的办公桌抽屉里订书!)
标签: .net wcf security architecture wcf-security