[英]ASP.NET WebAPI client authorization in a distributed application
我正在创建一个分布式应用程序,它将使用ASP.NET Web API来支持单页Web应用程序(SPA)和其他潜在的本机移动应用程序平台。 我当前的体系结构使用Thinktecture Identity Server作为STS,它将为我的客户端提供用于访问WebAPI的授权令牌。 在后端,我将拥有持久性和业务逻辑,这些逻辑将由WCF服务与WebAPI分开的应用程序域公开。 WebAPI将调用服务层以访问数据并在域上执行操作。
我的问题是关于授权 。 我将使用基于声明的授权,并可以从WCF暴露的业务层中有关用户的域数据中扩展声明列表。 但是我应该在哪里进行授权? 在.NET 4.5中,ASP.NET现在具有一个可扩展的模型,使我可以使用ClaimsAuthorizationManager将授权逻辑从控制器中分离到单独的授权模块中。 另外, Thinktecture.IdentityModel在提供所有管道以在我的WebAPI应用程序中执行此任务方面做得非常好。 但是,我不禁想到授权逻辑应该位于我的业务层中,在WCF服务之后,并且不应该对面向客户端的WebAPI强制执行此任务。 如果我要求其他面向客户端的托管应用程序使用我基于WCF的业务层,那么他们还需要实现安全代码。 不利的一面是,这确实意味着未经授权的请求会在拒绝之前进入应用程序。
问题 :应该在ASP.NET中使用基于声明的授权功能,还是应该在WCF服务后面的业务层中包装授权?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.