Я хотел бы иметь два способа аутентификации в приложении Spring Boot. Приложение написано с WebFlux и с функциональным подходом. Для некоторых моих конечных точек я хотел бы иметь аутентификацию с basicHttp, а для некоторых конечных точек я хотел бы иметь аутентификацию JWT с использованием настраиваемого заголовка HTTP. Однако я не могу объединить две WebFilterChains или заставить его работать как один. Только один из методов работает в то время, не может заставить их оба работать. Код для JWT не закончен, но я хотел бы видеть 401, когда я отправляю запрос методом httpBasic auth. Пути в примерах являются поддельными.
Мои данные:
1)
Первый боб:
http
.securityMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/api/1/**"))
.csrf().disable()
.formLogin().disable()
.logout().disable()
.httpBasic().and()
.authenticationManager(authenticationManager(userService))
.build();
Второй боб:
http
.securityMatcher(ServerWebExchangeMatchers.pathMatchers("/api/2/**"))
.httpBasic().disable()
.csrf().disable()
.formLogin().disable()
.logout().disable()
.authenticationManager(tokenAuthManager)
.authorizeExchange()
.anyExchange().authenticated()
.and()
.build();
2)
http
.securityMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/api/1/**"))
.csrf().disable()
.formLogin().disable()
.logout().disable()
.httpBasic().and()
.authenticationManager(authenticationManager(userService))
.securityMatcher(ServerWebExchangeMatchers.pathMatchers("/api/2/**"))
.httpBasic().disable()
.csrf().disable()
.formLogin().disable()
.logout().disable()
.authenticationManager(tokenAuthManager)
.authorizeExchange()
.anyExchange().authenticated()
.and()
.build();