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

Não consigo acessar a documentação do SWAGGER

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeQuando tento acessar a url do swagger http://localhost:8080/swagger-ui.html recebo essa menssagem.

@Configuration
public class SwaggerConfigurations {

    @Bean
    public Docket forumApi() {
        //informa o tipo de documentação
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                //informa o pacote base(a partir de qual pacote ele começará a ler as classes)
                .apis(RequestHandlerSelectors.basePackage("br.com.alura.forum"))
                //quais endpoints serão feitas análises
                .paths(PathSelectors.ant("/**"))
                .build()
                //manda ignorar as urls que trabalham com usuário
                //para que os dados do usuário não apareçao na interface de documentação
                .ignoredParameterTypes(Usuario.class);
    }
}
//dentro dessa classe estão todas as configurações de segurança do projeto
//habilita o spring security
@EnableWebSecurity
//carrega e lê as configurações dentro desta classe
@Configuration
public class SecurityConfigurations extends WebSecurityConfigurerAdapter {

    @Autowired
    private AutenticacaoService autenticacaoService;

    @Autowired
    private TokenService tokenService;

    @Autowired
    private UsuarioRepository usuarioRepository;

    @Override
    @Bean
    //método que faz a injeção de dependências do authManager
    protected AuthenticationManager authenticationManager() throws Exception {
        return super.authenticationManager();
    }

    //faz a configuração de autenticação(login)
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        //informa qual classe(service) possui a lógica de autenticação
        auth.userDetailsService(autenticacaoService).passwordEncoder(new BCryptPasswordEncoder());

    }

    //faz a configuração de autorização(urls e perfil de acesso)
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers(HttpMethod.GET, "/topicos").permitAll()
            .antMatchers(HttpMethod.GET, "/topicos/*").permitAll()
            .antMatchers(HttpMethod.POST, "/auth").permitAll()
            //este endpoint devolve infos sensíveis sobre a aplicação
            //nao deve ser mostrado em produção
            .antMatchers(HttpMethod.GET, "/actuator/**").permitAll()
            //só permite disparar requisições para esse endereço se o cliente estivar autenticado
            //somentes as urls que não foram configuradas terão exigencia de autenticação
            .anyRequest().authenticated()
            //disabilita a proteção desnecessária
            .and().csrf().disable()
            //indica que a aplicação é statless
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            //indica ao Spring gerar um fomulário de atenticação
            //.and().formLogin();
            .and().addFilterBefore(new AutenticacaoViaTokenFilter(tokenService, usuarioRepository)
                    ,UsernamePasswordAuthenticationFilter.class);
    }

    //faz configuraçoes de recursos estáticos(js, imagens, etc.)
    @Override
    public void configure(WebSecurity web) throws Exception {

        //libera o swagger
        web.ignoring().antMatchers("/**.html", "/v2/api-docs", "/webjars/**", "/configuration/**", "swagger-resources/**");

    }
}
2 respostas
solução!

Oi Irene,

Acho que o problema está no metodo configure(WebSecurity web):

web.ignoring().antMatchers("/**.html", "/v2/api-docs", "/webjars/**", "/configuration/**", "swagger-resources/**");

Faltou a barra inicial na ultima String: /swagger-resources/**

Veja se resolve.

ahaha deu certo, era só isso. Valeu Rodrigo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software