Spring Security, anotação de segurança de método (@Secured) não está funcionando (java config)

Estou tentando configurar uma anotação de segurança de método usando @Secured ("ADMIN") (sem nenhum XML, apenas java config, Spring Boot). Mas o acesso via funções não funciona.

Configuração de segurança:

@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);
    }

.....

}

Quero restringir o acesso ao método do controlador:

@RestController
@RequestMapping("/api/groups")
public class GroupController {

    @Autowired
    private GroupService groupService;

    @Secured("ADMIN")
    @RequestMapping
    public List<Group> list() {
        return groupService.findAll();
    }

}

Restringir o acesso pelo URL está funcionando, com:

.antMatchers("/api/**").hasAuthority("ADMIN")

Talvez eu tenha esquecido de especificar que quero restringir por papéis?

UPD: Pelas regras, Em que camada deve ser@PreAuthorize("hasRole('ADMIN')") na camada Controller ou na camada Service?

questionAnswers(7)

yourAnswerToTheQuestion