我正在创建一个包含ASP.NET页面和Flash小程序的网站。我希望将我的业务逻辑封装在WCF服务中,该服务将通过两个端点公开:一个可通过HTTP(S)访问Internet,供Flash客户端使用,另一个可在数据中心内访问,供应用程序服务器使用。如果这似乎不是一个好方法,那么请阻止我;否则,我会继续......
问题是如何验证来自Flash客户端的请求。由于我不想将用户密码存储在浏览器cookie中,因此不希望每次请求都发送密码,并且不希望在初次登录后使用HTTPS,我打算使用令牌 - 基于认证系统。我也不希望用户在登录网站后必须登录Flash客户端,因此我计划在启动时使用Javascript将令牌传递给Flash客户端。
我知道WCF支持使用.NET Framework的内置安全框架(System.Security)来强制实施访问控制,我想利用这一点。
那么问题是:如何在Flash调用令牌时将令牌传递给WCF服务,以及如何在服务器上处理令牌?
答案 0 :(得分:2)
由于原来的问题似乎已得到回答,我将保持简短,但一种方法确实是在http标头中传递身份验证令牌并覆盖自定义CheckAccess(OperationContext operationContext, ref Message message)
中的ServiceAuthorizationManager
。
您之前已将服务配置为使用实施IAuthorizationPolicy
的自定义策略。
剩下的就是实现简单的IIdentity
和IPrincipal
类来存储您的授权状态。
有很多关于这个主题的好文章:
http://msdn.microsoft.com/en-us/library/system.identitymodel.policy.iauthorizationpolicy.aspx
http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceauthorizationmanager.aspx
我想这可能仍然感觉像是“自己动手”的解决方案,但是当你遵循既定的模式时,它至少会令人放心。它确实具有通过服务方法对您的授权代码进行黑名单的优势。