2010-11-19 192 views
4

我们有一个Web服务(C#中的WCF),直到现在,它已经在内部网上使用过。展望未来,我们希望向互联网开放。
显然我们担心淘气的人不能访问接口。在WCF中确保这一点的最佳实践方法是什么?它是WSS吗?
我假设某种登录界面和客户端必须使用每个调用返回的令牌?WCF:Web服务登录/身份验证:HowTo?

回答

3

你已经基本上六个选项:

  • Windows帐户 - 大内网,在互联网的情况没有那么大(内置,仅配置)对ASP

  • 用户名/密码.NET会员系统:您仍然需要保留有效用户的数据库;取决于你想要做什么,这可能适用于你(内置,仅配置 - 你需要跟踪你的用户群)

  • 客户端机器上的证书调用:只有那些有权利的机器证书被允许进入;对于一个封闭的用户群来说很好,在一般的面向互联网的场景中并不是那么好(内置,仅配置)

  • 某种必需的头文件 - 检查数据库(例如“有效头文件令牌”),只是通过例如检查计算校验和或任何知道你的“秘密”头的人都可以调用(内置,需要一点点编码来提取和检查头)

  • 一些自定义解决方案 - 你可以定义您自己的身份验证/授权方案,并根据您的喜好进行自定义;需要在你身边的一些代码 - 但给你最大的灵活性(自定义代码一路)

  • 没有检查 - 只要把它开放给任何人(内置,仅配置)

WCF guru extraordinaire,Juval Lowy,在MSDN杂志上有一篇很棒的文章:Declarative WCF Security - 也许这可以给你一些额外的提示和指针。他基本上定义了五种情况,并讨论了他为每种情况推荐的解决方案(并且将这些东西烘焙成现成的基于属性的声明性框架)

+0

您不认为使用WIF进行基于声明的访问控制是一种选择吗?通过联合,客户将能够控制哪些用户可以访问远程系统。如果系统暴露重要数据,这通常是裁员等方面的一个非常好的卖点。 – 2010-11-19 16:36:47

+0

@Klaus Byskov Hoffmann:坦率地说,我对真正的基于索赔的系统没有太多的见解。到目前为止,他们似乎在较小的环境中工作得并不好 - 或者在这种情况下他们会变得过分。对于拥有多种登录机制的全球企业来说,它们非常棒 - 但单一服务/公司具有哪些优势? – 2010-11-19 16:46:19

+0

我明白你来自哪里。但微软确实似乎正在将他们的产品组合与基于声明的授权结合起来。 SqlServer和Sharepoint都有支持它的即将发布的版本,并且Active Directory已经内置了STS角色。所以我认为人们不得不在某个时候接受这种技术。无论如何,我只是推荐它,因为我自己一起工作,而且我留下的印象是,让人们回避的是一种误解,认为它很难实现。它不是。 – 2010-11-19 16:53:40

2

您应该检查Windows Identity Foundation(WIF)。通过WIF,您可以构建一个安全令牌服务来处理认证部分,这样您的WCF服务只需处理授权。这是一个相当大的话题,所以我建议你看一下whitepapers并决定是否要使用它,然后再回来问一些更具体的问题。

+0

我同意。这绝对是要走的路,不仅适用于WCF服务,还适用于所有需要认证服务的Web应用程序。基于索赔的方法将认证机制从应用程序中分离出来(并且本质上是可重用的),并且为授权提供了更加灵活的基础。最重要的是,WIF让它很容易做到。 – 2010-11-19 17:08:14