如何仅在受保护的端点上应用spring安全过滤器?
我具有以下Spring Security配置:
httpSecurity .csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(unauthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/api/**").fullyAuthenticated()
.and()
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
该authenticationTokenFilterBean()
甚至在不匹配的终端应用/api/**
表现。我也尝试添加以下配置代码
@Overridepublic void configure(WebSecurity webSecurity) {
webSecurity.ignoring().antMatchers("/some_endpoint");
}
但这仍然不能解决我的问题。如何告诉Spring Security仅在与安全URI表达式匹配的端点上应用过滤器?谢谢
回答:
我有一个具有相同要求的应用程序,要解决此问题,我基本上将Spring Security限制为给定的ant match模式(使用antMatcher
),如下所示:
http.antMatcher("/api/**").authorizeRequests() // .anyRequest().authenticated() //
.and()
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
你可以阅读以下内容:http
仅在与/api/**
授权any request
给authenticated
用户的ant模式匹配的请求上调用这些配置and add filter authenticationTokenFilterBean() before UsernamePasswordAuthenticationFilter
。对于所有其他请求,此配置无效。
以上是 如何仅在受保护的端点上应用spring安全过滤器? 的全部内容, 来源链接: utcz.com/qa/414380.html