Spring Security, Annotation zur Methodensicherheit (@Secured) funktioniert nicht (Java-Konfiguration)
Ich versuche, mit @Secured ("ADMIN") eine Annotation für die Methodensicherheit einzurichten (ohne XML, nur Java-Konfiguration, Spring Boot). Der Zugriff über Rollen funktioniert jedoch nicht.
Security Config:
@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);
}
.....
}
Ich möchte den Zugriff auf die Methode des Controllers einschränken:
@RestController
@RequestMapping("/api/groups")
public class GroupController {
@Autowired
private GroupService groupService;
@Secured("ADMIN")
@RequestMapping
public List<Group> list() {
return groupService.findAll();
}
}
Der eingeschränkte Zugriff über die URL funktioniert mit:
.antMatchers("/api/**").hasAuthority("ADMIN")
Vielleicht habe ich vergessen anzugeben, dass ich nach Rollen einschränken möchte?
UPD: Nach den Regeln, auf welcher Ebene muss @ se@PreAuthorize("hasRole('ADMIN')")
in der Controller-Schicht oder in der Service-Schicht?