1

在我们的组织中,我们托管了许多 WCF 服务,这些服务在我们的内部网络上相互通信。通常,我们为这些服务使用 netTcpBinding 以提高性能。目前关于是否在绑定端点上启用安全性存在争议,我想了解是否有任何特定的指导方针可用于确定是否/何时禁用安全性是合适的。

我倾向于保持安全,因为

  1. 这是默认设置,因此需要较少的配置即可使用
  2. 它是默认设置,因此它的目的是经常使用
  3. 它只是“感觉”更安全而不是更安全

争论的另一面是:

  1. 假设网络本身是安全的,没有理由使用安全性
  2. 使用安全性会降低性能
  3. 有时,如果客户端有自己的客户端对其进行身份验证,则对服务的身份验证可能会更加棘手(我认为这可能被描述为“双跳”场景)

我想无论最佳实践是什么,最终的答案最终都是“视情况而定”。但是我想知道在生产环境中应该使用哪种方案。

4

3 回答 3

1

它尚未被提及,但我也倾向于考虑您正在传递什么样的数据。如果我们谈论的是银行交易或一些重要的事情,我会选择尽可能多的安全性。另一方面,如果只是某些桌面应用程序中显示的数据而不是帐号、社会保险号、信用卡信息等,那么我认为禁用它没有问题。

另外,性能目前是一个问题吗?如果您必须满足 SLA 的定义和交易时间,那么禁用安全性可能是一件好事。

它是如此可配置,因为有很多事情要考虑:)

于 2012-06-14T23:54:23.547 回答
1

听起来好像您已经在没有安全性的情况下运行服务。很明显,有人决定采用您当前的配置。我倾向于非常依赖“如果它没有损坏就不要修复它”原则,因此在您的场景中更改许多 WCF 服务的配置需要说明为什么需要的时间和精力应该投资这样做。坦率地说,在您的情况下,您为安全而提出的三点对我来说并不适用。

这与做出新开发或新环境的决定完全不同。在这种情况下,默认的“Security On”(假设工作量、成本和性能影响最小)将是我的首选选项。

于 2012-06-14T22:57:07.267 回答
1

你是对的——“这取决于”。

安全性是一件好事,但如果您不需要它(即您在安全环境中工作,不需要身份验证),那么它可能会产生很大的开销。

我最近在一个项目中工作,我们发现 Windows 身份验证导致了巨大的开销,请求大小增加了一倍或三倍(大量微小的请求)。我们只是关闭了身份验证以显着提高性能。

WCF 的好处是安全性是完全可配置的。假设您的代码中没有任何安全依赖项,您可以在以后根据需要通过配置轻松地打开和关闭它。还假设您正在使用配置!

于 2012-06-14T23:41:35.657 回答