0% encontró este documento útil (0 votos)
4 vistas7 páginas

Introducción a JSON Web Token (JWT)

JSON Web Token (JWT) es un estándar seguro para la transmisión de información entre dos partes, utilizado principalmente para autenticación y autorización en aplicaciones web y servicios API. Un JWT consta de tres partes: encabezado, cuerpo y firma, lo que permite su verificación y asegura la integridad de los datos. Su estructura autónoma y la firma digital lo convierten en una opción popular en el desarrollo de aplicaciones distribuidas.

Cargado por

Andrea Quiroga
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas7 páginas

Introducción a JSON Web Token (JWT)

JSON Web Token (JWT) es un estándar seguro para la transmisión de información entre dos partes, utilizado principalmente para autenticación y autorización en aplicaciones web y servicios API. Un JWT consta de tres partes: encabezado, cuerpo y firma, lo que permite su verificación y asegura la integridad de los datos. Su estructura autónoma y la firma digital lo convierten en una opción popular en el desarrollo de aplicaciones distribuidas.

Cargado por

Andrea Quiroga
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

INSTITUTO TECNOLÓGICO

MARCELO QUIROGA SANTA CRUZ


CARRERA DE SISTEMAS INFORMÁTICOS

TRABAJO DE INVESTIGACION

JSON WEB TOKEN (JWT)

ESTUDIANTE: QUISPE CHIQUIPA GLADYS

LICENCIADO: LIC. LIMA MAMANI JHONNY STANLEY

LA PAZ – BOLIVIA
2023
JSON WEB TOKEN (JWT)
1. Introducción
JSON Web Token (JWT) es un estándar abierto y seguro para transmitir
información entre dos partes en forma de objetos JSON. Se utiliza principalmente
como un mecanismo de autenticación y autorización en aplicaciones web y
servicios API.
Un JWT consta de tres partes: el encabezado (Header), el cuerpo (Payload) y la
firma (Signature). El encabezado especifica el tipo de token y el algoritmo de
firma utilizado. El cuerpo contiene los datos que se desean transmitir, como
información de usuario o permisos. La firma se utiliza para verificar la integridad
del token.
El flujo típico de uso de JWT implica que un usuario se autentique y obtenga un
JWT válido del servidor. Este token se almacena en el cliente y se envía en cada
solicitud al servidor. El servidor valida el JWT y extrae la información necesaria
para autenticar y autorizar la solicitud.
Una ventaja clave de JWT es su capacidad para ser autónomo, lo que significa
que la información contenida en él es confiable y no requiere consultar una base
de datos en cada solicitud. Sin embargo, es importante mantener la clave secreta
utilizada para firmar los JWT de manera segura.
En resumen, JWT es un estándar útil y seguro para la transmisión de información
confiable entre dos partes. Su versatilidad lo convierte en una opción popular
para la autenticación y autorización en aplicaciones web y servicios API.
2. Antecedentes
Los antecedentes del JSON Web Token (JWT) se remontan al concepto de
tokens de seguridad utilizados en sistemas distribuidos. En el pasado, los
sistemas utilizaban cookies o tokens de sesión para gestionar la autenticación y
autorización de los usuarios.
Sin embargo, con el aumento de las arquitecturas orientadas a servicios y las
aplicaciones web API, se hizo necesario contar con un estándar más flexible y
seguro para transmitir información de manera eficiente entre diferentes partes.
En 2010, se introdujo el concepto de "JSON Web Token" en una especificación
llamada "Stateless HTTP Authentication". Esta especificación sentó las bases
para el formato y el proceso de autenticación basado en JWT.
Posteriormente, el grupo de trabajo de la IETF (Internet Engineering Task Force)
creó el estándar RFC 7519 en 2015, que definió formalmente el formato y las
reglas para los JWT. Desde entonces, el uso de JWT ha ido ganando
popularidad en el desarrollo de aplicaciones web y servicios API.
JWT ofrece varias ventajas sobre los enfoques tradicionales de autenticación,
como las cookies de sesión. Al ser tokens autónomos, no requieren un
almacenamiento en el servidor y se pueden transmitir de forma eficiente en las
solicitudes HTTP. Además, JWT permite la firma digital, lo que garantiza la
integridad de los datos y previene la manipulación no autorizada de los tokens.
Gracias a su simplicidad, flexibilidad y seguridad, JWT se ha convertido en un
estándar ampliamente adoptado en la autenticación y autorización en
aplicaciones web y servicios API, proporcionando una solución eficaz para la
gestión de identidad y acceso en entornos distribuidos.
3. Estructura de JWT
Un JSON Web Token (JWT) consta de tres partes separadas por puntos ('.'): el
encabezado (Header), el cuerpo (Payload) y la firma (Signature). A continuación,
se describe la estructura de cada una de estas partes:
[Link] (Header)
El encabezado de un JWT contiene información sobre el tipo de token y el
algoritmo de firma utilizado. Es un objeto JSON que se codifica en Base64 y
generalmente contiene dos propiedades "alg" (algoritmo) y "typ" (tipo), el primero
indica el algoritmo de firma utilizado, como HMAC, RSA o ECDSA y la segunda
propiedad especifica el tipo de token, que en el caso de JWT es "JWT" en
mayúsculas.
Ejemplo de encabezado JWT codificado en Base

json
{
"alg": "HS256",
"typ": "JWT"
}

[Link] (Payload):
El cuerpo de un JWT contiene los datos que se desean transmitir. Al igual que el
encabezado, es un objeto JSON codificado en Base64. El cuerpo puede
contener información estándar predefinida (claims) y también información
personalizada adicional.
Existen tres tipos de claims comunes en el cuerpo de un JWT:
Claims registrados (Registered Claims): Son claims estándar y predefinidos que
se recomienda utilizar para transmitir información común, como el emisor (iss), el
destinatario (sub), la fecha de emisión (iat), la fecha de expiración (exp), etc.
Claims privados (Private Claims): Son claims personalizados definidos por las
partes involucradas y se utilizan para transmitir información específica de la
aplicación.
Claims públicos (Public Claims): Son claims definidos en estándares o
especificaciones públicas y se deben utilizar de acuerdo con su definición.
Ejemplo de cuerpo JWT codificado en Base

Json
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
[Link] (Signature):
La firma de un JWT se utiliza para verificar la integridad del token y garantizar
que no haya sido manipulado durante la transmisión. La firma se crea
concatenando el encabezado codificado en Base, el cuerpo codificado en
Base64 y una clave secreta conocida solo por el servidor emisor del token. El
resultado se pasa por un algoritmo de firma, como HMAC o RSA, para generar
una firma única.
La firma se agrega al final del JWT, separada por un punto ('.').
Ejemplo de firma JWT generada con HMAC-SHA256

scss
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secretKey
)

La estructura completa de un JWT es la concatenación del encabezado codificado en


Base, el cuerpo codificado en Base y la firma, separados por puntos ('.')

css

[Link]

4. Objetivo de JWT
el objetivo de JWT es proporcionar un mecanismo seguro y eficiente para la
autenticación, autorización y transferencia de información entre dos partes. Su
estructura autónoma, la firma digital y su compatibilidad multiplataforma lo
convierten en una elección popular en el desarrollo de aplicaciones web y
servicios API.
5. Aplicación (ejemplo en código)
Aquí tienes un ejemplo en código de cómo se puede utilizar JWT en una
aplicación web usando el lenguaje de programación Python y la biblioteca
PyJWT:

import jwt
# Definir una clave secreta para firmar y verificar el JWT
clave_secreta = "mi_clave_secreta"
# Función para generar un JWT
def generar_jwt(usuario):
payload = {"usuario": usuario}
token = [Link](payload, clave_secreta, algorithm="HS256")
return [Link]("utf-8")
# Función para verificar y decodificar un JWT
def decodificar_jwt(token):
try:
payload = [Link](token, clave_secreta, algorithms=["HS256"])
return payload
except [Link]:
# El token ha expirado
return "El token ha expirado."
except [Link]:
# El token es inválido
return "El token es inválido."
# Generar un JWT para un usuario
jwt_token = generar_jwt("usuario123")
print("JWT generado:", jwt_token)
# Decodificar y verificar el JWT
decoded_payload = decodificar_jwt(jwt_token)
print("JWT decodificado:", decoded_payload)
6. Bibliografía

1. Jones, M., Bradley, J., & Sakimura, N. (2015). JSON Web Token (JWT). RFC
7519. [Link]
2. Web Authentication Working Group. (2020). Web Authentication: An API for
accessing Public Key Credentials Level 2. W3C Recommendation.
[Link]
3. Huang, C., Gu, Z., Zhang, S., & Zhao, K. (2019). JWT Vulnerabilities: A
Systematic Analysis of Security Issues in JSON Web Token Implementations.
IEEE Access, 7, 135617-135627. [Link]
4. Lohr, S. (2019). Token-based Authentication in Web Applications: An Analysis of
JSON Web Tokens. In 2019 5th International Conference on Control, Automation
and Robotics (ICCAR) (pp. 183-187). IEEE.
[Link]

También podría gustarte