我应该在哪里实现n层架构中的安全/授权?
我正在使用N层架构开发ASP.Net MVC应用程序。我应该将授权模块实现为不同的层还是服务?
某些业务规则也取决于用户角色,那么实现安全性的最佳方式是什么?
答案 0 :(得分:2)
在n层应用程序中,无论使用何种技术(C#,java ...),您可能都希望将授权完全外部化为其他服务,如您自己提到的那样。有一种称为XACML(可扩展访问控制标记语言)的标准。它给你
使用XACML,您可以将细粒度授权(即考虑用户,资源和其他上下文元数据的授权)应用于您的所有应用层:表示层(显示/隐藏或启用/禁用窗口小部件) ),Web层(控制对Web应用程序,URL,Web服务,API的访问),业务层,甚至数据库层本身。我称之为随处可见的架构。
XACML的好处在于它并非特定于您的.NET环境。这意味着您可以在其他环境中利用它。
我上周在Java开发者大会上提出了这个主题。您可以在SlideShare上查看我的演示文稿。
HTH