Webflux: ServerAuthenticationEntryPoint - ReactiveSecurityContextHolder пуст - PullRequest
1 голос
/ 20 февраля 2020

Я пытался получить SecurityContext :: getAuthentication следующим образом:

@Component
public class AuthenticationEntryPoint implements ServerAuthenticationEntryPoint {

    @Override
    public Mono<Void> commence(ServerWebExchange serverWebExchange, AuthenticationException authException) {

        return ReactiveSecurityContextHolder.getContext()
                .switchIfEmpty(Mono.error(new IllegalStateException("ReactiveSecurityContext is empty")))
                .map(SecurityContext::getAuthentication)
                .flatMap(a -> { return Mono.empty();});}

, однако контекст пуст. похоже, что реактивная цепочка была разорвана.

Вот фрагмент кода securityconfig:

@EnableReactiveMethodSecurity
public class SecurityConfig {

   private AuthenticationEntryPoint authenticationEntryPoint;

    @Bean
    public SecurityWebFilterChain configure(final ServerHttpSecurity http) {

        http
                .csrf().disable()

                .authorizeExchange()
                ...

                .and()
                .exceptionHandling()
                .authenticationEntryPoint(authenticationEntryPoint)

               ...

        return http.build();
    }

задаюсь вопросом, отсутствует ли что-нибудь или есть ли другой способ получить контекст в аутентификацииEntryPoint .

...