17

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

4

6 回答 6

11

Spring Security可能对你有好处。

于 2010-10-09T02:46:54.217 回答
9

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

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

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

  3. JAAS(Java Authentication and Authorization Services)
    JAAS 是一种安全 API,由专为用户身份验证和授权而设计的 Java 包组成。JAAS 在 Java SE 1.3 中作为可选包引入,后来从 JDK 1.4 开始集成到 JDK 中。

  4. OACC
    这个Java 应用程序安全框架旨在细粒度(对象级别)访问控制。它的重点是提供功能齐全的 API 来执行和管理应用程序的身份验证和授权需求。它提供了灵活和强大的安全模型的完整实施。

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

  6. Keyclock
    Keycloak 是针对现代应用程序和服务的开源身份和访问管理解决方案。它提供单点登录 (SSO)、身份代理和社交登录、用户联合、客户端适配器、管理控制台和帐户管理控制台等功能。

于 2019-01-02T10:39:34.673 回答
3

APACHE SHIRO Java 安全框架

它在授权上使用基于角色的访问控制

于 2013-02-05T07:25:30.300 回答
3

我想您要回答的问题是:

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

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

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

根据具体的答案,jguard(基于 JAAS 构建)可能是一个非常好的选择 - http://jguard.net/

于 2010-10-09T23:37:53.027 回答
2

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

  • 您是在谈论 Web 服务的访问控制,还是其他?

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

  • 您是否也需要处理授权?

于 2010-10-09T03:18:26.180 回答
1

Apache Fortress 是符合 ANSI RBAC 的引擎 (INCITS 359),并在 Apache 软件许可下发布。你可以从这里把它拉下来:https ://directory.apache.org/fortress/ 。

于 2013-12-22T02:22:36.620 回答