WCF安全 - 我不明白的列表

时间:2009-01-18 23:24:51

标签: asp.net wcf web-services security wcf-security

我正在围绕WCF和安全问题进行讨论,所以我只想在这里提出一系列问题,希望有人能帮助我获得清晰的图片。

  1. 有人可以给我一个关于传输与消息级安全性的简单英文解释。

  2. 认为我有一个在SSL下运行的服务,它将根据用户的Windows凭据对用户进行身份验证。我也认为我了解如何通过PrincipalPermission限制对服务方法的访问。但是我如何实际检索当前的IPrinciple,所以我可以根据谁调用该服务返回不同的结果?

  3. 我已经想出了如何开启跟踪,我可以使用“Microsoft服务跟踪日志查看器”查看我的跟踪日志,但如果我能弄清楚我正在显示什么,那就太糟糕了。有没有一个合适的资源解释如何使用这个东西?

  4. 使用“证书”clientCredentialType时,这与SSL有什么不同?

  5. 使用“Windows”clientCredentialType时,如何查看正在通过的Windows用户?

  6. 我的要求意味着我必须使用basicHttpBindings - 我在假设中是否正确:

    • 我只能使用传输级安全性吗?
    • 我无法为此绑定实现自定义用户名/密码?
  7. 我知道这些问题可能看起来很愚蠢,但任何有关澄清的帮助都会有所帮助。

    编辑:

    1. 如何以类似于.asmx服务的方式向我的服务添加自定义SOAP标头?这是一种有效的方法吗?
    2. 编辑:

      除了上述问题,我想知道是否可以通过检查Active Directory来验证基于Windows用户的Windows移动设备。对于迄今为止我发现的所有内容,似乎不太可能。

      N.B。对于那些不知道Windows CE版本的WCF可用的人:仅限传输级别安全性,以及客户端凭据类型的无/证书。因此,CE的WCF似乎默认不允许这样做,但是我可以安全地在消息中发送这些信息(通过方法签名),这是否是发送此类信息的可接受方式?

3 个答案:

答案 0 :(得分:15)

我不知道所有答案,但这里是我知道的答案

  1. 传输安全意味着在传输消息时对通信进行加密,因此无法读取和/或篡改消息。消息安全意味着消息本身的内容被加密传输但不一定。例如,消息安全性可以与HTTP一起使用,而传输安全性则需要使用HTTPS(或其他绑定)。
  2. IPrincipal principal = Thread.CurrentPrincipal;
  3. 没有回答
  4. 是的,虽然SSL本身使用证书但它并不相同。您可以让客户端发送服务已知的证书或由受信任的机构签名的证书,证明该服务知道客户端是谁以及是否允许他们进行呼叫。使用SSL只会确保第三方无法通过拦截网络包来读取客户端与服务之间的通信。
  5. IPrincipal principal = Thread.CurrentPrincipal; principal.Identity.Name;
  6. 否。
    • 您选择无,传输,消息和混合安全性但是传输安全性需要使用HTTPS调用端点,因为协议的安全版本
    • 编辑:查看this forum上的讨论。
  7. 这些问题当然不是愚蠢的。

    P.S。我可以推荐Juval Lowy的书programming WCF services,它非常深入,并附带了一个非常有用的框架,可以扩展WCF /简化某些事情。

答案 1 :(得分:4)

结帐WCF Security Guidance。如果您需要更多信息,您应该能够在那里找到所有信息,它非常完整。虽然看起来@olle给出了一个非常完整的答案......

答案 2 :(得分:0)

另请查看这些WCF Common Security Scenarios