Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Spring Security + JWT + Spring Boot

Olá,

Estou fazendo uma aplicação Rest com o uso de um token com JWT. O problema é o seguinte estou utilizando um filtro de autenticação para verificação da header. Só o que acontece, eu quero que este filtro seja usado apenas nos diretórios /rest. E os outros diretórios funcionassem sem este filtro.

Segue o código abaixo para visualização da configuração!

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                // starts authorizing configurations
                .authorizeRequests()
                // authenticate all remaining URLS
                .anyRequest().authenticated().and()
                // adding JWT filter
                .addFilterBefore(new JWTFilter(), UsernamePasswordAuthenticationFilter.class)
                // enabling the basic authentication
                .httpBasic().and()
                // configuring the session as state less. Which means there is
                // no session in the server
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()


                // disabling the CSRF - Cross Site Request Forgery
                .csrf().disable();
    }
2 respostas
solução!

Olá,

Já consegui resolver, vi que no Spring Security tem uma possibilidade de duas configurações.

Segue o código caso alguém tenha duvida!

@EnableWebSecurity
public class WebSecurityConfig{

    @Configuration
    @Order(1)                                                        
    public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
        protected void configure(HttpSecurity http) throws Exception {



            http
            // starts authorizing configurations
            .antMatcher("/rest/**")
            .authorizeRequests()
            .anyRequest().authenticated().and()
            .addFilterBefore(new JWTFilter(), UsernamePasswordAuthenticationFilter.class)

            .httpBasic().and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

            .csrf().disable();
        }
    }

    @Configuration                                                   
    public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    // starts authorizing configurations
                    .authorizeRequests()
                    .antMatchers("/rest/**").permitAll()
                    .anyRequest().authenticated()
                    .and().formLogin().permitAll()
                    .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).and()

                    .csrf().disable();
        }

    }



}

No Caso tem a configuração principal com a classe 'FormLoginWebSecurityConfigurerAdapter' e a secundaria que é a que faz minha lógica utilizando o token em 'RestWebSecurityConfigurationAdapter'.

Você salvou o dia! Obrigado!