繁体   English   中英

分布式应用程序中的ASP.NET WebAPI客户端授权

[英]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服务后面的业务层中包装授权?

如果可能,您应该始终尝试使用所使用的框架提供的授权工具。 就微软而言,它是基于声明的授权。 这样做的好处是,您可以将授权逻辑隔离在其自身的一层中,而不是在业务逻辑中。

基于声明的授权是许多授权方法之一。 另一种可能是使用XACML。 我最近为开发人员(尽管是Java开发人员)做了有关XACML的演讲。 您可以在此处了解更多信息。 我还写了一篇有关.NET和XACML的文章,您可以在此处查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM