Implementación de autorización y autenticación basada en roles de Spring Security con Spring Boot 3.0

May 08 2023
Hola, estudiantes, aquí vamos a conocer la implementación de seguridad de Spring con Spring Boot. Spring Security proporciona autenticación, autorización y protección contra ataques comunes.

Hola, estudiantes, aquí vamos a conocer la implementación de seguridad de Spring con Spring Boot. Spring Security proporciona autenticación, autorización y protección contra ataques comunes.

Autenticación: la autenticación es la forma en que verificamos la identidad del usuario que intenta acceder a un recurso en particular, una vez que se realiza la autenticación, conocemos la identidad y podemos realizar la autorización.

Autorización - Autorización significa otorgar permiso para acceder a un recurso/url en particular.

Pasos para implementar Spring Security

Paso 1: agregue la dependencia de Spring Security en POM.XML

Paso 2: Cree una clase de configuración, agregue métodos de autenticación y autorización.

@EnableWebSecurity proporciona una configuración de seguridad predeterminada para nuestra aplicación. La seguridad predeterminada activa tanto los filtros de seguridad HTTP como la cadena de filtros de seguridad y aplica la autenticación básica a nuestros puntos finales.

@Configuration le dice a Spring Boot que escanee la clase en busca de definiciones de beans y las registre con el contexto de la aplicación.

El método authenticateProvider() se usa para almacenar todos los detalles del usuario, como nombre de usuario, contraseña, roles. Spring Security contiene la clase DaoAuthenticationProvider que contiene userDetailsService y passwordEncoder.passwordEncoder() se usa para cifrar la contraseña y la contraseña cifrada se almacena en la base de datos.

El método SecutityFilterChain() es para autorizar los recursos, aquí

.requestMatchers("/products/welcome","/products/new").permitAll() es para dar acceso a todos los usuarios, cualquier usuario puede acceder a esas dos direcciones URL.

requestMatchers(“/products/**”).authenticated() es para dar acceso a usuarios autenticados.

Paso 3: implementar la autorización basada en funciones

@PreAuthorizeLa anotación se utiliza para especificar una expresión que se evaluará antes de que se ejecute el método. Si la expresión se evalúa como verdadera, el método se ejecuta; de lo contrario, se lanza una AccessDeniedException.

El getAllProducts()método solo puede ser ejecutado por usuarios con el ROLE_USERrol, mientras que el getProductById()método puede ser ejecutado por usuarios con el ROLE_ADMINrol.

Probando la implementación

Se agregó el código de muestra para probar la implementación.

Después de proporcionar las credenciales de usuario, el usuario puede acceder al punto final del usuario

Cuando el usuario intente acceder al punto final de administración con la credencial de usuario, se mostrará una página de error

Nota: si desea el código de github funcional de esta implementación, síganos y comente su ID de correo electrónico. Le enviaré el enlace del código fuente a su correo electrónico.

Parte 2: autenticación y autorización de Spring Security con JWT

Enlaces de referencia para otros conceptos de Spring Boot:

Tutorial de primavera AOP

Tutorial de registro de arranque de Spring

Configuración centralizada en Spring Boot

Anotaciones de Hibernate más utilizadas

Patrones de diseño de microservicios importantes para entrevistas