https://github.com/zairbulos/jwt-spring-security
👨🏫 Spring Security - JSON Web Token - Autenticación & Autorización
https://github.com/zairbulos/jwt-spring-security
jjwt json-web-token jwt jwt-spring-boot-integration jwt-spring-security spring-security spring-security-jwt
Last synced: 4 months ago
JSON representation
👨🏫 Spring Security - JSON Web Token - Autenticación & Autorización
- Host: GitHub
- URL: https://github.com/zairbulos/jwt-spring-security
- Owner: ZairBulos
- Created: 2024-02-11T15:45:17.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-12T22:27:02.000Z (about 1 year ago)
- Last Synced: 2024-11-12T01:33:33.595Z (6 months ago)
- Topics: jjwt, json-web-token, jwt, jwt-spring-boot-integration, jwt-spring-security, spring-security, spring-security-jwt
- Language: Java
- Homepage:
- Size: 249 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Spring Security - JSON Web Token - Autenticación & Autorización
El objetivo de este proyecto es proporcionar un ejemplo práctico de cómo implementar autenticación y autorización en una aplicación Spring Boot utilizando JSON Web Tokens (JWT) y Spring Security.
Este proyecto servirá como guía para desarrolladores que deseen entender y aplicar estos conceptos en sus propios proyectos.
![]()
## Introducción
### Autenticación vs Autorización
| Autenticación | Autorización |
|--------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Determinar que un usuario es quien dice ser, el usuario provee credenciales para validar su identidad. | Determinar si un usuario puede o no acceder a un recurso, el usuario tiene asociados roles o existen reglas que determinaran si se puede o no accederal recurso. |### JSON Web Token
Es un standard abierto que define una forma compacta y autónoma de transmitir información de manera segura entre partes como un objeto JSON.
De nuevo, JWT es un estándar, lo que significa que todos los JWT son tokens, pero no todos los tokens son JWT.Debido a su tamaño relativamente pequeño, un JWT se puede enviar a través de una URL, mediante un parámetro POST o dentro de un encabezado HTTP, y se transmite rápidamente.
Contiene toda la información requerida sobre una entidad para evitar consultar una base de datos más de una vez.
El receptor de un JWT tampoco necesita llamar a un servidor para validar el token.
![]()
![]()
### Spring Security
Spring Security es una librería que forma parte del paraguas del proyecto Spring. Spring tiene más de 25 sub proyectos o módulos que aportan funcionalidad que las aplicaciones pueden utilizar si lo creen conveniente.
En este caso Spring Security trata de agrupar todas las funcionalidades de **control de acceso de usuarios** sobre proyectos Spring.El control de acceso permite limitar las opciones que pueden ejecutar un determinado conjunto de usuarios o roles sobre la aplicación.
En esta dirección, Spring Security controla las invocaciones a la lógica de negocios o **limita el acceso de peticiones HTTP** a determinadas URLs.En definitiva, **Spring Security es el método más conveniente para incorporar una capa de seguridad** en donde se desea que sólo algunos usuarios tengan acceso a métodos y controladores de una aplicación Spring en base al uso de roles de usuario.
## Dependencias
Este proyecto utiliza la biblioteca [jjwt](https://github.com/jwtk/jjwt) para manejar los tokens JWT.
### Maven
Agrega las siguientes dependencias al archivo `pom.xml`:
````xml
io.jsonwebtoken
jjwt-api
0.12.5io.jsonwebtoken
jjwt-impl
0.12.5
runtimeio.jsonwebtoken
jjwt-jackson
0.12.5
runtime````
### Gradle
Agrega las siguientes dependencias al archivo `build.gradle`:
````gradle
implementation 'io.jsonwebtoken:jjwt-api:0.12.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.5'
````## API de Postman
Puedes encontrar la colección de la API de este proyecto en [JWT Spring Security API](https://www.postman.com/crimson-space-910033/workspace/jwt-spring-security). Esta colección contiene todas las solicitudes necesarias para probar la API.