WCF:Web服务登录/身份验证:如何?

时间:2010-11-19 16:26:45

标签: c# wcf security authentication wss

到目前为止,我们已经在内联网上使用了一个Web服务(C#中的WCF)。展望未来,我们希望将其打开到互联网上 显然我们担心顽皮的人无法访问界面。在WCF中确保这一点的最佳实践方法是什么?是WSS吗? 我假设某种登录界面和返回的令牌,客户端必须在每次调用时使用它?

2 个答案:

答案 0 :(得分:3)

您基本上有六种选择:

  • Windows帐户 - 在Intranet中很棒,在互联网场景中不太好(内置,仅配置)

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

  • 客户端计算机上的证书调用:只允许那些拥有正确证书的计算机;非常适合封闭的用户群,在一般的面向互联网的情况下不太好(内置,仅配置)

  • 某种必需的标题 - 要么针对数据库进行检查(例如“有效的标题标记”),要么仅通过例如计算校验和或其他东西 - 任何知道你的“秘密”标题的人都可以调用(内置,需要一些编码来提取和检查标题)

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

  • 没有支票 - 只需对所有人开放(内置,仅配置)

<> WCF guru extraordinaire,Juval Lowy,在MSDN杂志上有一篇很棒的文章:Declarative WCF Security - 也许这会给你一些额外的提示和指示。他基本上定义了五个场景,并讨论了他为每个场景推荐的解决方案(并将这些内容加入到现成的,基于属性的声明框架中)

答案 1 :(得分:2)

您应该检查Windows Identity Foundation(WIF)。使用WIF,您可以构建一个安全令牌服务来处理身份验证部分,这样您的WCF服务只需要处理授权。这是一个非常大的主题,因此我建议您查看一些whitepapers并决定是否要使用它,然后再回来询问一些更具体的问题。

相关问题