Eu realizei uma configuração para liberar o "/actuator" somente para o perfil de ADMIN, porem não funcionou.
Segue configuração:
Debugando essa classe e possível verificar que o "usuario.getAuthorities()" consegue recuperar o perfil ADMIN que esta no banco.
Classe AutenticacaoViaTokenFilter.java:
private void autenticarCliente(String token) {
Long idUsuario = tokenService.getIdUsuario(token);
Usuario usuario = usuarioR.findById(idUsuario).get();
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
Classe SecurityConfiguration.java:
// Configura as Autorizacoes
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/auth").permitAll()
.antMatchers(HttpMethod.GET, "/actuator/**").hasAnyRole("ADMIN")
.anyRequest().authenticated()
.and().csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().addFilterBefore(new AutenticacaoViaTokenFilter(tokenService,usuarioR), UsernamePasswordAuthenticationFilter.class);
}
Banco de dados
Usuario:
'1', 'admin@admin', 'admin', '$2a$10$fD.5D0bneBqUjorJ4vps5uAN5wxjsH8qU9mx2ALM/EFUqH98iosgW'
Perfil
'1','ADMIN'
Usuario_Perfil:
'1', '1'
Estou recebendo 403 quando faço a requisição. Tem algum outro ponto que posso verificar?