Quando 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/**");
}
}