Se creó este proyecto con el fin de desarrollar tanto el proceso de autenticación como el de autorización. El propósito de este módulo es poder implementar las librerías de Spring Security y JWT para poder generar el proceso de autenticación (devolviendo un token) y el de autorización (restringiendo el acceso a ciertos endpoints dependiendo el rol de cada usuario).
-
Copiar y Pegar el paquete
securityque se encuentra dentro del siguiente path de este proyecto/src/main/java/com/melof10/autha su proyecto de Spring Boot. -
Colocar las properties para JWT en
aplication.propertiesque se encuentra en el siguiente path/src/main/resourcesde este proyecto.# Security jwt.secret=secret jwt.expiration=604800
Puede cambiar el valor de esas properties, lo importante es que existan.
-
Agregar al
pom.xmllas siguientes dependencias<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt --> <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>9.23</version> </dependency>
-
Vamos a levantar nuestra aplicación para que se creen
trestablas nuevas en nuestra Base de Datos, siempre y cuando nuestro proyecto esté conectado a la DB. Para corroborar la conexión, puede inspeccionar el archivoapplication.propertiesde este proyecto, en mi caso mi base de datos se llamaauth -
Hacer los siguientes
INSERTen la tablarolesINSERT INTO roles VALUES(NULL, 'ROLE_ADMIN');
INSERT INTO roles VALUES(NULL, 'ROLE_USER');
Ya tenemos todo listo comenzar a utilizar nuestra aplicación.
-
Registro de usuario con rol
AdminyUser -
Inicio de Sesión con rol
AdminyUser, identificándome con élemailypassword -
Registro de usuario con rol
User -
Inicio de Sesión con rol
User, identificándome con élusernameypassword -
Refresh token. Recibe en el body un token para actualizarlo y darle una nueva fecha de caducidad
-
Así quedarán nuestras tablas
usersyrole_userdespués de registrar a dos usuarios diferentes con sus respectivos roles
Como verán tendremos dos formas de iniciar sesión, con el email ó username (uno u otro) y una contraseña.
Lógicamente el código es totalmente modificable, solo se hizo para dar el puntapié inicial con el fin de implementar todo lo relacionado ál proceso de Autenticación y Autorización.








