到目前为止,我们已经在内联网上使用了一个Web服务(C#中的WCF)。展望未来,我们希望将其打开到互联网上 显然我们担心顽皮的人无法访问界面。在WCF中确保这一点的最佳实践方法是什么?是WSS吗? 我假设某种登录界面和返回的令牌,客户端必须在每次调用时使用它?
答案 0 :(得分:3)
您基本上有六种选择:
Windows帐户 - 在Intranet中很棒,在互联网场景中不太好(内置,仅配置)
针对ASP.NET成员资格系统的用户名/密码:您仍需要保留有效用户的数据库;取决于你想做什么,这可能适合你(内置,仅配置 - 你需要跟踪你的用户群)
客户端计算机上的证书调用:只允许那些拥有正确证书的计算机;非常适合封闭的用户群,在一般的面向互联网的情况下不太好(内置,仅配置)
某种必需的标题 - 要么针对数据库进行检查(例如“有效的标题标记”),要么仅通过例如计算校验和或其他东西 - 任何知道你的“秘密”标题的人都可以调用(内置,需要一些编码来提取和检查标题)
一些自定义解决方案 - 您可以定义自己的身份验证/授权方案,并根据自己的喜好进行自定义;需要一些代码 - 但为您提供最大的灵活性(一直是您的自定义代码)
没有支票 - 只需对所有人开放(内置,仅配置)
答案 1 :(得分:2)
您应该检查Windows Identity Foundation(WIF)。使用WIF,您可以构建一个安全令牌服务来处理身份验证部分,这样您的WCF服务只需要处理授权。这是一个非常大的主题,因此我建议您查看一些whitepapers并决定是否要使用它,然后再回来询问一些更具体的问题。