使用org.springframework.security:spring-security-oauth2-resource-server5.1.0.RC2(通过org.springframework.boot:spring-boot-starter-security:2.1.0.M3)我正在尝试启用安全性一些http路径,但使用基于JWT的令牌安全性为其他人禁用它 .
我尝试了以下方法,但它在各种路径和http方法上的执行安全性不一致:
-
强制执行GET /帐户?名称=正在检查
-
在POST /帐户上强制执行
-
未在GET / customers上强制执行?name = John
-
在POST /客户上强制执行
为什么它会强制执行POST给/ customers?
@Configuration
public class SecurityConfig {
@Autowired
private ReactiveJwtDecoder jwtDecoder;
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
// @formatter:off
http
.authorizeExchange().pathMatchers("/customers").permitAll()
.and()
.authorizeExchange().pathMatchers("/customers/**").permitAll()
.and()
.authorizeExchange().pathMatchers("/accounts/**").authenticated()
.and()
.oauth2ResourceServer()
.jwt().jwtDecoder(this.jwtDecoder);
// @formatter:on
return http.build();
}
}
1 回答
我通过两件事部分解决了这个问题:
添加了csrf() . disable()(也许这没关系,因为这些是无状态REST服务?)
在我发送授权 Headers 之前,我提到auth正在执行 . 我认为它会跳过授权,即使有 Headers ,但无论如何它都会处理它 .
更新的代码: