【问题标题】:WCF Security for Web, Windows and mobile clients适用于 Web、Windows 和移动客户端的 WCF 安全性
【发布时间】:2009-10-03 01:24:09
【问题描述】:

我正在构建一个具有 Web、Windows 和移动 (iPhone) 客户端的应用程序,我想使用 WCF 来实现服务层并且不熟悉 WCF 在安全性、身份验证和授权。

我通常希望尽可能多地重复使用 ASP.Net 成员组件,以节省我编写代码的时间,因为它繁琐且重复。这是一个好方法吗?有哪些替代方法?

谁能指导我如何最好地实现我的目标?

【问题讨论】:

    标签: .net asp.net wcf security


    【解决方案1】:

    如果您在“ASP.NET 兼容模式”下运行 WCF(代码中的一个属性允许它,而一行配置来启用它),您可以将所有常见的 ASP.NET 安全机制与 WCF 一起使用:是。见http://msdn.microsoft.com/en-us/library/aa702682.aspx

    【讨论】:

      【解决方案2】:

      查看WCF security scenarios 上的这篇文章系列,其中解释了您应该采用的许多最佳实践。

      您基本上有三种选择来保护您的客户端和服务器之间的消息传递:

      • 什么都没有
      • 传输级别(例如,直接在协议级别保护整个消息)
      • 消息级别(例如,保护/加密消息本身)

      通常,当您可以确定客户端和服务之间只有一个跃点时,您会倾向于使用传输级别(TCP/IP 级别)的安全性,例如在防火墙后面的公司 LAN 环境中。这是最快的 - 在您的公司 (Windows) LAN 环境中使用 netTcpBinding。

      如果您可能有多个跃点(例如路由器、存储和转发中介等) - 通常是您的互联网/外部客户端场景 - 那么传输级安全性将不再起作用,因此您可能必须使用消息 -在消息从客户端传输到服务时,对消息本身进行加密和签名的级别安全性。

      现在这只是关于在途中保护消息。

      至于身份验证(知道它在呼叫您的是谁),您通常可以在您的 LAN/公司内使用 Active Directory/Windows 凭据,或外部客户端的用户名/密码(或可能用于相同目的的证书,尽管这有点更多的工作)。您还可以想象是否允许匿名用户不告诉您他们是谁 - 或拒绝他们 - 这取决于您。

      一旦您知道它在呼叫您的是谁,您就可以进行授权 - 决定他们可以做什么。在这里,您通常会在公司/LAN 场景中使用 Active Directory 组成员身份,或者在其他场景中使用 ASP.NET 成员身份/角色系统。或者您可以自己滚动 - 这完全取决于您。

      希望对您有所帮助,让您现在就开始!

      马克

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-20
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        • 2011-04-25
        • 1970-01-01
        相关资源
        最近更新 更多