通过示例实现spring security accessdecisionmanager

y0u0uwnf  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(415)

请注意:似乎有人在不加解释地连续提出我的问题。这个问题是关于主题的,不是重复的,展示了研究成果并提供了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<ConfigAttribute> configAttributes 参数是,它们是用来做什么的,它们是如何被使用的,以及在运行时它们的一些真实世界(具体)示例是什么。
这个 Authentication 参数很明显:它是我的身份验证令牌,将包含主体,可能是他们的凭证,以及一个身份验证的列表 GrantedAuthorities (权限)与主体关联。
但是另外两个论点( objectconfigAttributes )对我来说是绝对的秘密。
有人知道这些论点是什么,它们的一些实际用例是什么,以及它们打算如何使用吗?

ddhy6vgd

ddhy6vgd1#

作为javadoc的 AccessDecisionManager 说:
object–被调用的安全对象
通常,它是 MethodInvocation 接口,它表示应为其执行调用安全决策的方法。
configattributes—与被调用的安全对象关联的配置属性
它是与安全对象(方法)相关的元数据属性的集合。例如,它可以包含与此方法相关的注解的信息,例如 @PermitAll , @PreAuthorize , @PostFilter

相关问题