Módulo: Seguridad con Spring Security
Este módulo forma parte del curso de SpringBoot. Incluye 12 lecciones .
Spring Boot 3, en combinación con Spring Security, proporciona un sólido marco para implementar seguridad en aplicaciones Java. Este módulo cubre cómo configurar y utilizar Spring Security en una aplicación Spring Boot 3 para asegurar endpoints, gestionar autenticación y autorización, y mucho más.
Configuración inicial
Para empezar, es necesario agregar las dependencias de Spring Security en tu archivo build.gradle o pom.xml. Aquí tienes un ejemplo utilizando Gradle:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
Gestión de usuarios
Para gestionar usuarios, puedes definir un UserDetailsService personalizado. A continuación, un ejemplo de cómo hacerlo:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
public class UserConfig {
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("user")
.password(passwordEncoder().encode("password"))
.roles("USER")
.build());
manager.createUser(User.withUsername("admin")
.password(passwordEncoder().encode("admin"))
.roles("ADMIN")
.build());
return manager;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
Protección de endpoints REST
Para asegurar endpoints REST, se puede utilizar la misma configuración de seguridad. Aquí un ejemplo de cómo proteger un controlador REST:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/public")
public String publicEndpoint() {
return "This is a public endpoint";
}
@GetMapping("/private")
public String privateEndpoint() {
return "This is a private endpoint";
}
}
En la configuración de seguridad, se asegura que solo los usuarios autenticados puedan acceder al endpoint privado.
Otros módulos de este curso
Seguridad con Spring Security
Lecciones de este módulo
Explora todas las lecciones disponibles en Seguridad con Spring Security
Todos los módulos del curso
Navega entre los módulos de SpringBoot
Seguridad con Spring Security
Estás aquíExplora más sobre SpringBoot
Descubre más recursos de SpringBoot
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, SpringBoot es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.