【问题标题】:How is Spring Security ACL different from AuthorizationSpring Security ACL 与 Authorization 有何不同
【发布时间】:2019-12-17 15:09:48
【问题描述】:

我认为基于 Spring 角色的访问控制是根据授予用户的角色保护资源所需的一切。现在我看到spring也有类似ACL的东西。所以只想了解ACL是否与基于角色的授权相同。如果不是,它是否补充了基于角色的授权,或者这两者是排他性的还是完全不相关的。

【问题讨论】:

    标签: spring spring-boot spring-security


    【解决方案1】:

    Roles 和 ACL:s 都与授权有关。区别在于他们在哪个级别进行访问控制。

    • 角色每个应用程序。例如,SYSADMIN 角色可以授予编辑系统中所有用户的权限。在 Spring Security 中,角色有时称为 authorities,从技术上讲,角色是权限的子集。

    • ACL(访问控制列表)每个域对象。例如,考虑一个可以上传文件的应用程序。应该允许用户 A 读取文件 X,并且应该允许用户 B 读取文件 Y。这是通过为文件 X 设置一个 ACL 为文件 Y 设置一个 ACL 来解决的。也可以有不同的权限;例如用户 C 应该能够读取和更改文件 X,但只能读取文件 Y。

    角色通常是静态的,而 ACL:s 是在系统中创建资源时动态添加的。

    【讨论】:

    • cool...这是关于 ACL 的精彩解释。但是为什么 Spring 应用程序必须担心域对象。这是 Spring App 外部的实体(不像 /admin 路径,它是应用程序的一部分,并且角色定义了哪个角色的用户(管理员、经理......)可以访问此路径,并且与 spring 的方法级别访问类似。)。 Spring如何支持ACL,它是否适用于每个定义的域。喜欢 ???您能否提供一个 ACL 的生产/实际用例。
    • @samshers Spring Security 包括 ACL 的 JDBC 实现。默认情况下,您可以使用任何具有Long id 属性的类作为域类。但是可以自定义,因此任何具有唯一键的类都可以是域类。使用 JPA 时,@Entity 类是典型的域类。
    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2013-02-25
    • 2019-07-18
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多