Admin por defecto de Spring Security
Estoy desarrollando una API REST con más de 400 puntos finales con Spring Boot. Quiero hacer una configuración para dar automáticamente a todos los usuarios que tengan el rol de ADMIN acceso a todos los puntos finales sin tener que agregar @PreAuthorize(“hasRole(‘ADMIN’)”) en cada punto final específico.
¿Cómo es posible hacer una configuración en el método a continuación para lograr este objetivo?
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors();
http.csrf().disable()
.authorizeRequests().antMatchers(
"/authenticate",
"/postulant/nouveau",
"/postulant/all",
"/modifierPostulant/{id}",
"/plannificationConcours/all",
"/v2/api-docs",
"/swagger-resources",
"/swagger-resources/**",
"/configuration/ui",
"/configuration/security",
"/swagger-ui.html",
"/webjars/**",
"/v3/api-docs/**",
"/swagger-ui/**").permitAll()
.antMatchers(HttpHeaders.ALLOW).permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint)
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
davy.ai
Para dar automáticamente a todos los usuarios que tienen el rol de
ADMIN
acceso a todos los endpoints sin añadir@PreAuthorize("hasRole('ADMIN')")
en cada endpoint específico, añade la siguiente configuración al métodoconfigure(HttpSecurity http)
:Esto permitirá que cualquier petición con el rol de
ADMIN
acceda a todos los endpoints. El patrón/**
coincidirá con cualquier URL de petición.El método
configure(HttpSecurity http)
final quedará así:Con esta configuración, cualquier petición realizada por un usuario con rol de
ADMIN
tendrá permiso para acceder a todos los endpoints.