是否有基于Java开源角色的访问控制系统?
答案 0 :(得分:9)
Spring Security可能对你有好处。
答案 1 :(得分:2)
我认为你要回答的问题是:
用户你是否有权在对象 o 上执行操作操作?
要考虑的一件事是,您的域对象和用户组是如何从业务角度定义的(在AC机制之外)。对于任何RBAC实现,您需要对其进行配置以告知您的用户和用户组是什么。这将影响您对RBAC实施的选择。
另一个(更具体)问题:您是否需要支持覆盖权限,包含和排除?具体来说,您是否希望能够支持对象o1可用于用户组g1但不是用户u1(谁是组g1的一部分)的场景?
根据具体答案, jguard (基于JAAS构建)可能是一个非常好的选择 - http://jguard.net/
答案 2 :(得分:2)
APACHE SHIRO Java安全框架
答案 3 :(得分:1)
有很多可能的解决方案,但哪一种最好(即满足您的需求而不是太重量级或太复杂而无法实施)取决于您的要求:
您是在谈论网络服务的访问控制还是其他什么?
您希望实施哪种访问控制?完全基于资源URL,还是取决于所请求实体的状态/元数据?角色是简单的还是分层的?不同的行动需要不同的角色吗?
您是否也需要处理授权?
答案 4 :(得分:1)
有几个框架为您提供授权系统:
Spring Security
Spring Security是一个高度可定制的框架,被广泛用于处理任何用Java开发的基于Enterprise的应用程序中出现的身份验证和访问控制(授权)问题。
Apache Shiro
Apache Shiro是一个功能强大且易于使用的Java安全框架,它执行身份验证,授权,加密和会话管理。使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移动应用程序到最大的Web和企业应用程序。
JAAS (Java Authentication and Authorization Services)
JAAS是由专门为用户身份验证和授权而设计的Java软件包组成的安全API之一。 JAAS作为Java SE 1.3中的可选软件包引入,后来从JDK 1.4开始集成到JDK中。
OACC
该Java应用程序安全框架旨在细化(对象级别)访问控制。其重点是提供功能全面的API,以强制执行和管理应用程序的身份验证和授权需求。它提供了灵活而强大的安全模型的完整实现。
jCasbin
jCasbin是用于Java项目的功能强大且高效的开源访问控制库。它为基于各种访问控制模型的授权实施提供支持。
答案 5 :(得分:0)
Fortress是ANSI RBAC兼容引擎(INCITS 359),并在BSD开源许可下发布。你可以从这里下载:http://iamfortress.org。