{"id":19741966,"url":"https://github.com/zairbulos/jwt-spring-security","last_synced_at":"2025-05-09T01:26:03.496Z","repository":{"id":222045026,"uuid":"755963078","full_name":"ZairBulos/jwt-spring-security","owner":"ZairBulos","description":"👨‍🏫 Spring Security - JSON Web Token - Autenticación \u0026 Autorización","archived":false,"fork":false,"pushed_at":"2024-02-12T22:27:02.000Z","size":255,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T20:23:41.398Z","etag":null,"topics":["jjwt","json-web-token","jwt","jwt-spring-boot-integration","jwt-spring-security","spring-security","spring-security-jwt"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZairBulos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-11T15:45:17.000Z","updated_at":"2025-03-15T22:27:13.000Z","dependencies_parsed_at":"2024-11-12T01:31:04.758Z","dependency_job_id":"60c5f444-c893-477e-a2d7-6298d6310414","html_url":"https://github.com/ZairBulos/jwt-spring-security","commit_stats":null,"previous_names":["zairbulos/jwt-spring-security"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZairBulos%2Fjwt-spring-security","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZairBulos%2Fjwt-spring-security/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZairBulos%2Fjwt-spring-security/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZairBulos%2Fjwt-spring-security/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZairBulos","download_url":"https://codeload.github.com/ZairBulos/jwt-spring-security/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253173013,"owners_count":21865611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jjwt","json-web-token","jwt","jwt-spring-boot-integration","jwt-spring-security","spring-security","spring-security-jwt"],"created_at":"2024-11-12T01:28:34.963Z","updated_at":"2025-05-09T01:26:03.452Z","avatar_url":"https://github.com/ZairBulos.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Security - JSON Web Token - Autenticación \u0026 Autorización\n\nEl 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. \nEste proyecto servirá como guía para desarrolladores que deseen entender y aplicar estos conceptos en sus propios proyectos.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./documentation/images/jwt-spring-security.png\"\u003e\n\u003c/p\u003e\n\n## Introducción\n\n### Autenticación vs Autorización\n\n| Autenticación                                                                                          | Autorización                                                                                                                                                     |\n|--------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|\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. |\n\n### JSON Web Token\n\nEs un standard abierto que define una forma compacta y autónoma de transmitir  información de manera segura entre partes como un objeto JSON. \nDe nuevo, JWT es un estándar, lo que significa que todos los JWT son tokens, pero no todos los tokens son JWT.\n\nDebido 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. \nContiene toda la información requerida sobre una entidad para evitar consultar una base de datos más de una vez. \nEl receptor de un JWT tampoco necesita llamar a un servidor para validar el token.\n\n\u003cdiv style=\"display: flex; justify-content: center;\"\u003e\n    \u003cimg src=\"./documentation/images/jwt-structure.png\" alt=\"JWT Structure\" style=\"width: 600px; margin-right: 20px;\"\u003e\n    \u003cimg src=\"./documentation/images/jwt-lifecycle.png\" alt=\"JWT Lifecycle\" style=\"width: 600px;\"\u003e\n\u003c/div\u003e\n\n### Spring Security\n\nSpring 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. \nEn este caso Spring Security trata de agrupar todas las funcionalidades de **control de acceso de usuarios** sobre proyectos Spring.\n\nEl control de acceso permite limitar las opciones que pueden ejecutar un determinado conjunto de usuarios o roles sobre la aplicación. \nEn esta dirección, Spring Security controla las invocaciones a la lógica de negocios o **limita el acceso de peticiones HTTP** a determinadas URLs.\n\nEn 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.\n\n## Dependencias\n\nEste proyecto utiliza la biblioteca [jjwt](https://github.com/jwtk/jjwt) para manejar los tokens JWT.\n\n### Maven\n\nAgrega las siguientes dependencias al archivo `pom.xml`:\n\n````xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.jsonwebtoken\u003c/groupId\u003e\n    \u003cartifactId\u003ejjwt-api\u003c/artifactId\u003e\n    \u003cversion\u003e0.12.5\u003c/version\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.jsonwebtoken\u003c/groupId\u003e\n    \u003cartifactId\u003ejjwt-impl\u003c/artifactId\u003e\n    \u003cversion\u003e0.12.5\u003c/version\u003e\n    \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.jsonwebtoken\u003c/groupId\u003e\n    \u003cartifactId\u003ejjwt-jackson\u003c/artifactId\u003e \u003c!-- or jjwt-gson if Gson is preferred --\u003e\n    \u003cversion\u003e0.12.5\u003c/version\u003e\n    \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n````\n\n### Gradle\n\nAgrega las siguientes dependencias al archivo `build.gradle`:\n\n````gradle\nimplementation 'io.jsonwebtoken:jjwt-api:0.12.5'\nruntimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.5'\nruntimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.5'\n````\n\n## API de Postman\n\nPuedes 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.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzairbulos%2Fjwt-spring-security","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzairbulos%2Fjwt-spring-security","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzairbulos%2Fjwt-spring-security/lists"}