【问题标题】:Implementing Spring Security AccessDecisionManager by example通过示例实现 Spring Security AccessDecisionManager
【发布时间】:2021-08-08 19:59:49
【问题描述】:

请注意:似乎有人在没有解释的情况下连续提出我的问题。这个问题是主题,不是重复的,显示研究并提供SSCCE。如果您希望 DV 或 CV 它,那很好,但请提供评论说明原因,以便我有机会解决您的问题...


这里是 Spring Boot 2.3.x 和 Spring Security。

我有一些相当复杂的授权逻辑,所以我相信我需要编写自己的 AccessDecisionManager impl 并将其连接到我的 WebSecurityConfigurerAdapter impl 中(如果这是错误的或有任何误解,纠正我!)。

那么,要实现你自己的AccessDecisionManager,你需要实现3个方法,其中之一是:

public class MyCustomAccessDecisionManager implements AccessDecisionManager {

    @Override
    public void decide(
            Authentication authentication,
            Object object,
            Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {

        // TODO

    }

}

我已经从高处和低处搜索了谷歌众神,对于我的生活,我找不到一个有意义的、真实的例子来说明 Object objectCollection&lt;ConfigAttribute&gt; configAttributes 参数是什么、它们的用途、它们的用途打算被使用,以及它们的一些真实世界(具体)示例在运行时将是什么。

Authentication 参数很明显:它是我的身份验证令牌,将包含主体,可能是他们的凭据,以及与主体关联的 GrantedAuthorities(权限)列表。

但其他两个论点(objectconfigAttributes )对我来说绝对是个谜。

有人知道这些参数是什么,它们的一些现实世界用例是什么,以及它们的用途是什么?

【问题讨论】:

    标签: spring-boot spring-security authorization access-control


    【解决方案1】:

    正如AccessDecisionManager 的 JavaDoc 所说:

    object – 被调用的安全对象

    通常,它是MethodInvocation 接口的一个实例,它表示应该执行调用安全决策的方法。

    configAttributes - 与被调用的安全对象关联的配置属性

    它是与安全对象(方法)相关的元数据属性的集合。比如可以包含与该方法相关的注解信息,如@PermitAll@PreAuthorize@PostFilter等。

    【讨论】:

    • 啊谢谢@Sergey (+1)。总结一下:我会在控制器方法中添加@Secured("CAN_MODIFY_FIZZBUZZ") 注释(例如,添加到FizzbuzzController#modifyFizzbuzz),然后object : Object 将是代表FizzbuzzController#modifyFizzbuzzMethodInvocation,而configAttributes 将是包含CAN_MODIFY_FIZZBUZZ 字符串的单例列表吗?你能证实我的理解是正确的吗?再次感谢!
    • 是的,我认为你是对的。根据SecuredAnnotationMetadataExtractorSecuredAnnotationSecurityMetadataSource 类,您的configAttributes 应该包含CAN_MODIFY_FIZZBUZZ。并且Object应该包含相应的方法调用对象。
    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 2012-03-13
    • 2023-03-05
    • 2021-01-19
    • 2014-09-29
    • 2013-04-17
    • 2023-03-13
    • 2014-08-06
    相关资源
    最近更新 更多