Функциональность Spring Boot Security WebFlux, не может создать конфигурацию для двух методов аутентификации - PullRequest
0 голосов
/ 31 августа 2018

Я хотел бы иметь два способа аутентификации в приложении 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();
...