Не удается пропустить запрос на вход в конфигурацию JWT при загрузке Spring - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над загрузкой Spring с настройкой аутентификации JWT. Мне нужно пропустить мой запрос на вход в систему от jwtfilter. На самом деле я сделал необходимые конфигурации, чтобы обойти это. Но все равно он не работает, как ожидалось.

Класс WebConfig

@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
@Configuration
public class WebConfig extends WebSecurityConfigurerAdapter {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());


       @Autowired
        private JwtAuthenticationProvider authenticationProvider;
        @Autowired
        private JwtAuthenticationEntryPoint entryPoint;

        @Bean
        public AuthenticationManager authenticationManager() {
            return new ProviderManager(Collections.singletonList(authenticationProvider));
        }

        @Bean
        public JwtAuthenticationTokenFilter authenticationTokenFilter() {
            JwtAuthenticationTokenFilter filter = new JwtAuthenticationTokenFilter();
            filter.setAuthenticationManager(authenticationManager());
            filter.setAuthenticationSuccessHandler(new JwtSuccessHandler());
            return filter;
        }

        @Override
        public void configure(WebSecurity web) throws Exception {
            web.ignoring().antMatchers("/login/**");
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {

            http.csrf().disable()
                    .exceptionHandling().authenticationEntryPoint(entryPoint)
                    .and()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                    .and()
                    .addFilterBefore(authenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class)
                    .headers().cacheControl();

        }

}

JwtAuthenticationTokenFilter class

public class JwtAuthenticationTokenFilter extends AbstractAuthenticationProcessingFilter {


        public JwtAuthenticationTokenFilter() {

            super("/**");
        }

        @Override
        public Authentication attemptAuthentication(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws AuthenticationException, IOException, ServletException {

            String header = httpServletRequest.getHeader("Authorization");


            if (header == null || !header.startsWith("Bearer ")) {
                throw new RuntimeException("JWT Token is missing");
            }

            String authenticationToken = header.substring(6);

            JwtAuthenticationToken token = new JwtAuthenticationToken(authenticationToken);
            return getAuthenticationManager().authenticate(token);
        }


        @Override
        protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
            super.successfulAuthentication(request, response, chain, authResult);
            chain.doFilter(request, response);
        }
    }

Я не понял ошибку, когда я вызываю запрос на вход, он входит в фильтр и показывает ошибку токена JWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...