Creación y Gestión de Roles y Permisos en Aplicaciones Web
Clase 11 de 23 • Curso de Java Spring Security: Autenticación y Seguridad Web
Contenido del curso
Configuración de seguridad
- 5

Configuración de Seguridad con Spring Security y Basic Authentication
06:32 min - 6

Funcionamiento del Basic Authentication Filter en Spring Security
11:50 min - 7

Deshabilitar protección CSRF en APIs REST con Spring Security
07:28 min - 8

Configuración de CORS en Spring Security para APIs y Frontend
12:11 min - 9

Configuración de Reglas de Acceso en Spring Security
07:45 min - 10

Creación de usuarios personalizados en Spring Security
07:07 min - 11

Creación y Gestión de Roles y Permisos en Aplicaciones Web
Viendo ahora
Autenticación con BD
- 12

Creación y Gestión de Usuarios en Base de Datos con Spring Security
04:50 min - 13

Implementación de User Detail Service en Spring Security con MySQL
09:21 min - 14

Asignación de Roles y Permisos en Spring Security
08:57 min - 15

Permisos Específicos con Authorities en Spring Security
13:07 min - 16

Seguridad de Métodos en Spring Security: Control de Accesos por Roles
06:19 min
Seguridad con JWT
- 17

Creación y Uso de JSON Web Tokens en Java con Auth0
09:05 min - 18

Implementación de Autenticación con JSON Web Tokens en Spring Boot
15:45 min - 19

Validación de JSON Web Tokens con Auth0 en Java
06:29 min - 20

Creación de Filtro de Seguridad JWT en Spring Security
18:16 min - 21

Implementación de JSON Web Token en Spring Security
11:58 min
Próximos pasos
¿Cómo gestionar roles de usuario en aplicaciones web modernas?
Las aplicaciones web modernas gestionan de manera eficaz los roles y permisos de los usuarios para garantizar la seguridad y funcionalidad del sistema. Este enfoque permite controlar y delimitar las acciones que pueden o no realizar los usuarios según sus roles. A continuación, exploramos cómo implementar diferentes roles y gestionar permisos a través de ejemplos prácticos, como los de un administrador y un cliente dentro de una API.
¿Cómo crear usuarios con roles personalizados?
Cuando se desarrolla una aplicación, es crucial definir y crear diferentes tipos de usuarios, cada uno con roles específicos que determinen sus capacidades dentro del sistema. Aquí te presentamos un ejemplo de cómo crear un segundo usuario con un rol distinto:
@Bean
public UserDetailsService userDetailsService() {
UserDetails admin = User.withDefaultPasswordEncoder()
.username("admin")
.password("admin123")
.roles("ADMIN")
.build();
UserDetails customer = User.withDefaultPasswordEncoder()
.username("Customer")
.password("Customer123")
.roles("CUSTOMER")
.build();
return new InMemoryUserDetailsManager(admin, customer);
}
En este ejemplo, además de un usuario admin, se añade un usuario Customer, con su respectiva contraseña y el rol CUSTOMER. Esto permite tener disponibles dos tipos de usuarios con capacidades diferenciadas dentro del sistema.
¿Cómo aplicar permisos específicos a cada rol?
Para especificar qué acciones puede realizar cada rol, es necesario definir reglas dentro del Filter Chain. Este enfoque nos ayuda a asegurar que cada rol de usuario tiene acceso a las operaciones adecuadas.
-
GET para múltiples roles:
- Se permite que tanto un administrador como un cliente puedan acceder al método GET en un determinado endpoint.
http.authorizeRequests() .antMatchers(HttpMethod.GET, "/api/pizzas/**").hasAnyRole("ADMIN", "CUSTOMER") -
POST exclusivo para administradores:
- Restringe el método POST solo a usuarios con rol de administrador, protegiendo operaciones críticas de modificación de datos.
.antMatchers(HttpMethod.POST, "/api/pizzas").hasRole("ADMIN") -
Protección total para endpoints críticos:
- Gareth sich implementando una cláusula para las órdenes, asegurándose que únicamente los administradores puedan gestionarlas.
.antMatchers("/api/orders/**").hasRole("ADMIN");
¿Cómo probar los permisos de acceso?
Para verificar que las configuraciones de permiso y roles funcionen adecuadamente, es recomendable realizar pruebas usando herramientas como Postman. Por ejemplo:
- Usuario Cliente: Intentar realizar un GET en
/api/pizzasdevuelve un éxito al estar permitido. - Consultar órdenes: Intentar un GET en
/api/ordersmostrará un error 403, porque el rolCUSTOMERno tiene permisos de acceso.
Si utilizamos las credenciales de un administrador, estas restricciones no se aplicarán en el acceso a las órdenes.
¿Qué pasos seguir para una autenticación robusta?
Ahora que se tienen roles y permisos básicos implementados, el siguiente paso es integrar un sistema de gestión de usuarios basado en una base de datos como MySQL. Este enfoque mejorará la autenticación y facilitará la gestión de usuarios en entornos más complejos y dinámicos.
Es momento de seguir aprendiendo y explorar cómo integrar el uso de bases de datos para manejar usuarios y autenticaciones. ¡No te detengas aquí, sigue adelante para construir una aplicación segura y eficiente!