适用于Web,Windows和移动客户端的WCF安全性

时间:2009-10-03 01:24:10

标签: .net asp.net wcf security

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

我通常喜欢重复使用尽可能多的ASP.Net成员资格组件,以节省我编写代码的时间,因为它既乏味又重复。这是一个很好的方法,有什么替代方案吗?

有人能给我指导如何最好地实现我的目标吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

查看WCF security scenarios上的这一系列文章,其中介绍了您应该接受的许多最佳实践。

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

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

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

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

现在这只是为了确保信息正确。

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

一旦你知道它是谁给你打电话,你就可以做授权 - 决定他们能做什么。在这里,您通常在公司/ LAN方案中使用Active Directory组成员身份,或在其他方案中使用ASP.NET成员身份/角色系统。或者你可以自己动手 - 这完全取决于你。

希望有所帮助,让你现在开始!

马克