Академический Документы
Профессиональный Документы
Культура Документы
Profile
Omar Jacobo Muñoz Veliz
Creado 20 May 2019 | leído hace menos de 1 minuto
Json Web Token es un conjunto de medios de seguridad para peticiones http y así
representar demandas para ser transferidos entre dos partes (cliente y servidor).
Las partes de un JWT se codifican como un objeto JSON que está firmado digitalmente
utilizando JSON Web Signature( JWS ).
autenticacion-basada-en-token
El formato de un JWT está compuesto por 3 strings separados por un punto . algo así
como:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NGE4Y2U2MThlOTFiMGIxMzY2NWUyZjkiLC
JpYXQiOiIxNDI0MTgwNDg0IiwiZXhwIjoiMTQyNTM5MDE0MiJ9.yk4nouUteW54F1HbWtgg1wJxeDjqDA_8
AhUPyjE5K0U
Header La primera parte es la cabecera del token, que a su vez tiene otras dos
partes, el tipo, en este caso un JWT y la codificación utilizada. Comúnmente es el
algoritmo HMAC SHA256, El contenido sin codificar es el siguiente:
{
"alg": "HS256",
"typ": "JWT"
}
Su codificación sería:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload: EL Payload está compuesto por los llamados JWT Claims donde irán
colocados la atributos que definen nuestro token. Existen varios que puedes
consultar aquí, los más comunes a utilizar son:
{
"sub": "54a8ce618e91b0b13665e2f9",
"iat": "1424180484",
"exp": "1425390142"
}
Su codificación sería:
eyJzdWIiOiI1NGE4Y2U2MThlOTFiMGIxMzY2NWUyZjkiLCJpYXQiOiIxNDI0MTgwNDg0IiwiZXhwIjoiMTQ
yNTM5MDE0MiJ9
También podemos añadirle más campos, incluso personalizados, como pueden ser el rol
del usuario, etc.
{
"sub": "54a8ce618e91b0b13665e2f9",
"iat": "1424180484",
"exp": "1425390142",
"role": 2
}
Signature: La firma es la tercera y última parte del JSON Web Token. Está
formada por los anteriores componentes (Header y Payload) cifrados en Base64 con
una clave secreta (almacenada en nuestro backend). Así sirve de Hash para comprobar
que todo está bien.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload), secret
);
Su codificación sería:
yk4nouUteW54F1HbWtgg1wJxeDjqDA_8AhUPyjE5K0U
Por tanto, todo nuestro JSON Web Token, una vez codificado tendrá esta forma:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NGE4Y2U2MThlOTFiMGIxMzY2NWUyZjkiLC
JpYXQiOiIxNDI0MTgwNDg0IiwiZXhwIjoiMTQyNTM5MDE0MiJ9.yk4nouUteW54F1HbWtgg1wJxeDjqDA_8
AhUPyjE5K0U