Spring mvc 如何配置SpringMVC(SpringBoot)的授权,默认情况下该授权为deny,注释允许

Spring mvc 如何配置SpringMVC(SpringBoot)的授权,默认情况下该授权为deny,注释允许,spring-mvc,spring-security,spring-boot,spring-data-rest,spring-hateoas,Spring Mvc,Spring Security,Spring Boot,Spring Data Rest,Spring Hateoas,我希望我的Spring HATEOAS API应用程序(构建在Spring Boot和Spring MVC上)的安全性配置能够确保默认情况下所有端点/控制器方法都是拒绝的,并且只能通过方法注释显式授予访问权限 我已经能够得到它,以便注释控制所有访问,但是如果开发人员忘记添加注释,匿名用户可以访问该方法。我希望开发人员必须显式地注释(或执行其他显式的开发操作)该方法,以便允许匿名访问 也许我需要编写一个定制的AccessDecisionManager,但我认为有理由怀疑默认拒绝行为已经过时了……我

我希望我的Spring HATEOAS API应用程序(构建在Spring Boot和Spring MVC上)的安全性配置能够确保默认情况下所有端点/控制器方法都是拒绝的,并且只能通过方法注释显式授予访问权限

我已经能够得到它,以便注释控制所有访问,但是如果开发人员忘记添加注释,匿名用户可以访问该方法。我希望开发人员必须显式地注释(或执行其他显式的开发操作)该方法,以便允许匿名访问

也许我需要编写一个定制的AccessDecisionManager,但我认为有理由怀疑默认拒绝行为已经过时了……我只需要转动正确的旋钮

我一直在尝试这样做,但徒劳:

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http        
        .authorizeRequests()
        .anyRequest()
        .hasRole("NOONEHASIT")
        ;
    }
}
以及一个控制器,如:

@Controller
public class RootController {

    @RequestMapping("/")
    @PreAuthorize("hasRole('DEFAULT') or isAnonymous()")
    public HttpEntity<RootResource> root(){
        //stuff
    }
}
@控制器
公共类根控制器{
@请求映射(“/”)
@预授权(“hasRole('DEFAULT')或isAnonymous()”)
公共HttpEntity根目录(){
//东西
}
}
没有人扮演这个角色,但这只是否定了所有人


有人得到了神奇的酱汁吗?

我认为如果不明确地允许您要注释的路径,就无法实现这一点。因此,您需要另一个过滤器链(即另一个
websecurityConfigureAdapter
),其顺序较低,明确允许访问您需要保护的所有路径。您可能能够自动执行此操作,例如,使用
@PreAuthorize
查找
@RequestMappings
,但这将是一个非常复杂的过程,我不确定这是否值得


注意:我不认为您需要一个不存在的角色在您的catch all filter中:您只需
denyAll()

就可以创建默认为deny的AccessDecisionManager?在我的示例中,使用WebSecurity配置适配器并不是必须的。这只是我要走的路。哦,我想我现在明白了。http安全性根本不考虑注释……检查将在稍后通过MethodInvocation的东西在管道中完成。所以你必须允许尝试甚至进入MethodInvocation的东西。是的,简而言之。HTTP安全性是在评估任何方法安全性之前应用的筛选器,因此在该级别拒绝所有内容没有意义。无论如何,要让methodinvocation默认拒绝控制器方法(似乎不太可能),您可能可以使用
@RequestMapping
方法,在缺少
@PreAuthorize
的情况下使用它们定义切入点。就像我说的,烦躁不安。