Java 基于角色的访问控制

Java 基于角色的访问控制,java,authorization,rbac,Java,Authorization,Rbac,是否有java开源的基于角色的访问控制系统?可能对您有好处。有很多可能的解决方案,但哪一个是最好的(即满足您的需求而不会太重或太复杂,无法实现)取决于您的需求: 您是在谈论web服务的访问控制还是其他什么 您希望实现什么样的访问控制?完全基于资源URL,还是取决于请求实体的状态/元数据?角色是简单的还是分层的?不同的行动需要不同的角色吗 您还需要处理授权吗 我认为您试图回答的问题是: 用户u是否有权对对象o执行操作op 一个要考虑的是,如何从业务角度定义域对象和用户组(在AC机制之外)。对于任

是否有java开源的基于角色的访问控制系统?

可能对您有好处。

有很多可能的解决方案,但哪一个是最好的(即满足您的需求而不会太重或太复杂,无法实现)取决于您的需求:

  • 您是在谈论web服务的访问控制还是其他什么

  • 您希望实现什么样的访问控制?完全基于资源URL,还是取决于请求实体的状态/元数据?角色是简单的还是分层的?不同的行动需要不同的角色吗

  • 您还需要处理授权吗


我认为您试图回答的问题是:

用户u是否有权对对象o执行操作op

一个要考虑的是,如何从业务角度定义域对象和用户组(在AC机制之外)。对于任何RBAC实现,您都需要对其进行配置,以告知您的用户和用户组是什么。这将影响您对RBAC实现的选择

另一个(更具体的)问题:是否需要支持覆盖权限、包含和排除?具体来说,您是否希望能够支持这样一种场景:对象o1可用于用户组g1,但不可用于用户u1(用户u1是组g1的一部分)

根据具体的答案,jguard(构建于JAAS之上)可能是一个非常好的选择-

Java安全框架


它在授权时使用

Apache Fortress是符合ANSI RBAC标准的引擎(INCITS 359),并根据Apache软件许可证发布。您可以从这里将其下拉:。

有几个框架为您提供授权系统:


  • 作为一个高度可定制的框架,Spring Security被广泛用于处理任何使用Java开发的基于企业的应用程序中出现的身份验证和访问控制(授权)问题


  • ApacheShiro是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序—从最小的移动应用程序到最大的web和企业应用程序


  • JAAS是一种安全API,由专门为用户身份验证和授权设计的Java包组成。JAAS作为JavaSE1.3中的可选包引入,后来从JDK1.4开始集成到JDK中


  • 此Java应用程序安全框架旨在细化(对象级)访问控制。它的重点是提供一个功能齐全的API来实施和管理应用程序的身份验证和授权需求。它提供了一个灵活而健壮的安全模型的完整实现


  • jCasbin是一个功能强大且高效的Java项目开源访问控制库。它支持基于各种访问控制模型强制执行授权


  • Key斗篷是一种面向现代应用程序和服务的开源身份和访问管理解决方案。它提供了诸如单点登录(SSO)、身份代理和社交登录、用户联合、客户端适配器、管理控制台和帐户管理控制台等功能


  • 您可以试用支持ACL、RBAC、ABAC的轻量级authz库: