2
respostas

[Dúvida] O acesso a localhost foi negado

Ao tentar acessar qualquer URL do Swagger estou tendo um erro de acesso negado e retorna o seguinte no terminal:

java.lang.RuntimeException: Token não encontrado ou inválido at med.voll.api.infra.security.SecurityFilter.getToken(SecurityFilter.java:51) ~[classes/:na] at med.voll.api.infra.security.SecurityFilter.doFilterInternal(SecurityFilter.java:32) ~[classes/:na] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374) ~[spring-security-web-6.1.5.jar:6.1.5] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-6.1.5.jar:6.1.5]

Minha classe de configuração de segurança: classe de configuração de segurança

Minha classe de geração do token: classe de geração do token

2 respostas

A mensagem de erro que você está enfrentando indica que há um problema de autenticação ao tentar acessar URLs do Swagger na sua aplicação. O erro específico menciona que o token não foi encontrado ou é inválido. Isso sugere que a sua aplicação está configurada para exigir um token de segurança válido para acessar determinadas partes da API, incluindo as documentações ou endpoints do Swagger.

Para resolver esse problema, você deve verificar alguns pontos:

  1. Token de Acesso: Certifique-se de que está fornecendo um token de acesso válido nas suas requisições ao Swagger. Se estiver acessando o Swagger UI através de um navegador, pode ser necessário configurar o token manualmente utilizando os mecanismos fornecidos pelo Swagger UI para autenticação.

  2. Configuração do Swagger: Verifique se o Swagger está configurado corretamente para trabalhar com o sistema de segurança da sua aplicação. Em alguns casos, pode ser necessário ajustar as configurações do Swagger para ignorar a autenticação para acessar a documentação da API, dependendo de como você deseja que ela seja acessível.

  3. Configurações de Segurança: Revise as configurações de segurança na sua aplicação, especificamente as regras definidas nos filtros de segurança do Spring Security. Certifique-se de que as URLs do Swagger não estão sendo bloqueadas inadvertidamente por alguma regra de segurança.

  4. Logs e Debugging: Use os logs da sua aplicação para obter mais informações sobre a falha de autenticação. Isso pode fornecer insights sobre o que está acontecendo exatamente e ajudar a identificar a configuração ou o problema específico.

Se precisar ajustar a configuração do Swagger para permitir o acesso sem autenticação, você pode fazer isso alterando as configurações de segurança do Spring Security na sua aplicação para excluir as URLs do Swagger das exigências de autenticação. Por exemplo, você pode adicionar uma regra para permitir acesso anônimo às URLs /swagger-ui.html, /v2/api-docs, /swagger-resources/**, /webjars/**, etc., dependendo da versão do Swagger e da configuração específica da sua aplicação.

Aqui está um exemplo de como você pode configurar o Spring Security para permitir o acesso anônimo ao Swagger:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // outras configurações de segurança
        .authorizeRequests()
            .antMatchers("/swagger-ui.html", "/v2/api-docs", "/swagger-resources/**", "/webjars/**").permitAll()
            // outras regras de acesso
        .anyRequest().authenticated();
}

Lembre-se de ajustar os padrões de URL de acordo com sua configuração específica do Swagger e da aplicação.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi!

Manda aqui o código da sua classe SecurityFilter.