Spring security 当启用安全性时,Spring cloud gateway为所有post请求返回403
我有以下服务: 尤里卡服务器 身份验证服务器Spring security 当启用安全性时,Spring cloud gateway为所有post请求返回403,spring-security,spring-webflux,spring-cloud-gateway,Spring Security,Spring Webflux,Spring Cloud Gateway,我有以下服务: 尤里卡服务器 身份验证服务器 Spring Gateway 这将把登录请求传递给登录服务 所有其他请求都将通过身份验证(使用jwt令牌和密钥)并传递给其他服务 登录服务 验证登录并发出jwt令牌 下面是我的配置。流甚至没有到达此代码 @Configuration @EnableWebFluxSecurity @EnableReactiveMethodSecurity public class SecurityConfig { private static fina
- Spring Gateway
- 这将把登录请求传递给登录服务
- 所有其他请求都将通过身份验证(使用jwt令牌和密钥)并传递给其他服务
- 验证登录并发出jwt令牌
@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
public class SecurityConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(SecurityConfig.class);
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private SecurityContextRepository securityContextRepository;
@Bean(value="org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration.WebFilterChainFilter")
public SecurityWebFilterChain springSecurityWebFilterChainFilter(ServerHttpSecurity http) {
LOGGER.info("In the securiry config..................");
return http
.csrf().disable()
.exceptionHandling()
.authenticationEntryPoint((swe, e) -> {
return Mono.fromRunnable(() -> {
swe.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
});
}).accessDeniedHandler((swe, e) -> {
return Mono.fromRunnable(() -> {
swe.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
});
})
.and()
.authenticationManager(authenticationManager)
.securityContextRepository(securityContextRepository)
.authorizeExchange()
.pathMatchers(HttpMethod.OPTIONS).permitAll()
.pathMatchers("/login-service/api/login").permitAll()
.anyExchange().authenticated()
.and().build();
}
}
我总是得到403
,其中找不到预期的CSRF令牌
此错误,即使我已禁用CSRF。
有人能帮您解决问题吗?您是否尝试添加您的角色:
.authorizeExchange()
.pathMatchers("/login-service/api/login").hasAuthority("ROLE_ADMIN")
.anyExchange().authenticated()
.and().build();
你能提供更多关于项目设置的信息吗?另外,为什么要使用
@Bean(value=“org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration.WebFilterChainFilter”)
作为该方法之上的显式Bean值?