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

Filtro de autenticacao é chamado no endoint de autorização.

Olá pessoal. Segui todas as configurações do curso, porém quando faço uma requisição para o endpoint de autorização (/auth) o filtro que valida o token JWT é chamado, mesmo com a instrução permitAll() e, como não existe token, um error 403 é retornado. Meu código:

    override fun configure(http: HttpSecurity) {
        http.authorizeRequests()
            .antMatchers(HttpMethod.GET, "/topicos").permitAll()
            .antMatchers(HttpMethod.GET, "/topicos/*").permitAll()
            .antMatchers(HttpMethod.POST, "/auth").permitAll()
            .anyRequest().authenticated()
            .and().csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and().addFilterBefore(AuthenticationFilter(tokenService, userRepository), UsernamePasswordAuthenticationFilter::class.java)
    }

Alguém passou por isso?

4 respostas

Oi Thiago,

A princípio o código está correto. Será que a requisição foi disparada via método get ao invés de post?

Não. Estou enviando um POST.

Fiz até um double check agora: https://pasteboard.co/JPPPlDR.png

Uma partiularidade do projeto, que você já deve ter percebido, é que ele está em Kotlin.

Estranho então, pois era para ignorar o /auth

Faz outro double check: parar o projeto, dar um "clean" e rodar novamente :D

solução!

Fiz clean, restart da IDE, restart do SO e nada.

Mas resolvi sobrescrevendo o método shouldNotFilter(HttpServletRequest) do filtro:

    override fun shouldNotFilter(request: HttpServletRequest): Boolean {
        val currentPath = request.requestURI
        return authenticationPath == currentPath
    }

Obrigado pela ajuda Rodrigo