Spring Security, la anotación de seguridad del método (@Secured) no funciona (configuración de Java)
Estoy tratando de configurar un método de anotación de seguridad usando @Secured ("ADMIN") (sin ningún XML, solo la configuración de Java, Spring Boot). Pero el acceso a través de roles no funciona.
Configuración de seguridad:
@Configuration
@EnableWebSecurity
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter{
.....
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").fullyAuthenticated().and()
.addFilterBefore(tokenAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
.....
}
Quiero restringir el acceso al método del controlador:
@RestController
@RequestMapping("/api/groups")
public class GroupController {
@Autowired
private GroupService groupService;
@Secured("ADMIN")
@RequestMapping
public List<Group> list() {
return groupService.findAll();
}
}
Restringir el acceso por la url está funcionando, con:
.antMatchers("/api/**").hasAuthority("ADMIN")
¿Tal vez olvidé especificar que quiero restringir por roles?
UPD: Según las reglas, en qué capa debe estar@PreAuthorize("hasRole('ADMIN')")
en la capa del controlador o en la capa de servicio?