我需要有关如何正确设置身份验证/授权的WCF帮助。我想尽可能多地使用它来完成这项工作。
我正在设置WCF 4.0应用程序服务,我将同时连接到同一服务的4.0 web和4.0 silverlight客户端。我希望客户端在服务上调用一个身份验证方法(它将验证针对数据库的用户名/密码),然后将一个令牌返回给客户端。然后,客户端将存储此令牌,并在每次后续服务调用时(透明地)发送它。在服务上,每次通话都会验证此令牌。此外,我还需要在每次操作调用期间使用UserID进行一些安全检查(服务器端),这样才可能需要包含在令牌中。
我想获得一些如何实现此目的的客户端/服务器示例!谢谢!
答案 0 :(得分:3)
我最终使用自定义安全令牌服务。我的客户端调用STS,验证并获取存储的令牌。然后我使用消息检查器将令牌插入到每个传出的wcf服务调用中,并使用服务器端的消息检查器通过验证令牌来拦截和验证每个调用。这很好用。
答案 1 :(得分:0)
您可以使用WSHttpBinding编写自定义用户名密码验证程序。这将使您能够验证用户名密码。但是,您无法将数据添加到auth发生后共享的令牌。
这是一个会话绑定,这意味着客户端在服务器上有一些关联状态。 (这对于具有负载均衡器的扩展方案不利,因为如果请求转到另一个服务器,您可能必须重新创建auth)
http://www.pnpguidance.net/post/WCF35SecurityGuidelinesNowAvailable.aspx
授权部分是棘手的部分,因为您可以声明性地指定Principal权限或使用命令选项。 http://msdn.microsoft.com/en-us/library/ff647503.aspx#AuthorizationOptionsWCF