3

我正在尝试找到任何可以与 Spring Security 或 Apache Shiro 框架一起使用的基于属性的访问控制 (ABAC) 范式的开源或商业实现。现在我找不到他们中的任何一个。我不认为我是第一个需要这种功能的人 - 所以你能推荐支持这个功能的框架吗?

此外,Apache Shiro 中的权限是否可以被视为 ABAC 范式实现的一个特例?

4

4 回答 4

5

jCasbin是一个强大而高效的 Java 项目开源访问控制库。它支持基于各种访问控制模型执行授权。ABAC 是 jCasbin 支持的模型之一。
ABAC:语法糖就像一种资源。所有者可用于获取资源的属性。
在 jCasbin 中,访问控制模型被抽象为基于 PERM 元模型(Policy、Effect、Request、Matches)的 CONF 文件。所以切换或升级项目的授权机制就像修改配置一样简单。您可以通过组合可用模型来自定义您自己的访问控制模型。例如,您可以在一个模型中同时获取 RBAC 角色和 ABAC 属性并共享一组策略规则。
它通过插件支持 Spring 启动:jcasbinspring-boott-plugin

此外,还有另一个名为EasyAback的开源项目。(原始项目文件是用俄语写的,我翻译了它们,此外还添加了一些其他文件和图表链接

于 2019-01-02T10:54:11.837 回答
4

这个 github示例展示了如何使用 Spring 表达式语言 (SPEL) 在 spring-security 框架之上实现 ABAC。一篇优秀的博客使用一个简单的 Web 应用程序描述了示例代码。来自 XACML 背景,我发现这个项目对 XACML 非常熟悉。它本质上映射 XACML 概念以在 JSON(而不是 XACML / XML)中定义策略,并使用熟悉的 spring-security API 和框架。

于 2018-08-27T00:51:06.747 回答
3

对于开源 Java 替代方案,您可以在 XACML Wikipedia 页面上找到几个:AuthzForce、Apache OpenAZ、WSO2 Balana。对于 AuthzForce,您可以找到使用嵌入式 Java PDP或(远程)RESTful PDP的 ABAC/XACML 授权过滤器的 Java 代码示例。

于 2017-05-23T20:56:30.910 回答
3

免责声明:我为 Axiomatics 工作

Axiomatics 提供了一个基于属性的访问控制 (ABAC) 实现,该实现与不同的环境集成:

  • 原生 Spring Security 集成
  • 通过我们的 SDK 和 API 与其他 Java 应用程序集成
  • 与 API 网关集成,例如 Apigee
  • 数据库安全

我们已经让客户与 Apache Shiro 集成。Apache Shiro 是 ABAC 的简化形式。它们可以与 ABAC 集成。

Axiomatics 的实现依赖于 XACML。

于 2016-08-17T04:42:00.510 回答