【问题标题】:ABAC support for Spring Security or Apache ShiroABAC 对 Spring Security 或 Apache Shiro 的支持
【发布时间】:2016-12-21 22:52:19
【问题描述】:

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

另外,Permissions in Apache Shiro 可以被视为 ABAC 范式实现的一个特例吗?

【问题讨论】:

    标签: spring security spring-security shiro abac


    【解决方案1】:

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

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

    【讨论】:

    • @ColmBhandal 谢谢,我已经更新了链接。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        免责声明:我为 Axiomatics 工作

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

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

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

        Axiomatics 的实现依赖于 XACML。

        【讨论】:

          猜你喜欢
          • 2016-04-08
          • 2016-12-17
          • 2017-09-28
          • 2015-11-22
          • 2014-10-27
          • 2018-03-31
          • 2018-06-15
          • 2013-06-19
          相关资源
          最近更新 更多