un Token Web JSON (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autónoma para transmitir información de forma segura entre las partes como un objeto JSON. Esta información puede ser verificada y confiable porque está firmada digitalmente. Los JWT se pueden firmar usando un par de claves secretas o públicas/privadas.

¿Qué es la estructura del Token web JSON?,

  • Header
  • Payload
  • Signature

Header

el encabezado normalmente consta de dos partes: el tipo de token, que es JWT, y el algoritmo de hash que se utiliza, como HMAC SHA256 o RSA.

por ejemplo:

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

entonces, este JSON está codificado en Base64Url para formar la primera parte del JWT.

Payload

la segunda parte del token es la payload, que contiene las reclamaciones. Las reclamaciones son declaraciones sobre una entidad.,

  • reclamaciones registradas: se trata de un conjunto de reclamaciones predefinidas que no son obligatorias, pero se recomiendan, para proporcionar un conjunto de reclamaciones útiles e interoperables. consulte esto para obtener más información nombres de reclamaciones registradas

  • reclamaciones públicas: estas pueden ser definidas a voluntad por aquellos que utilizan JWTs. Pero para evitar colisiones deben definirse

  • reclamos privados: estos son los reclamos personalizados creados para compartir información entre partes que acuerdan usarlos y no son reclamos registrados o públicos.,

a continuación se muestra un ejemplo de carga útil:

{ "sub": "1234567890", "name": "John Doe", "admin": true}

Signature

para crear la parte de firma, debe tomar el encabezado codificado, la carga útil codificada, un secreto, el algoritmo especificado en el encabezado y firmarlo.

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

a Continuación, usted tiene que ponerlo todo junto. A continuación se muestra un JWT que tiene codificado el encabezado y la carga útil anteriores, y está firmado con un secreto.

Si usted quiere jugar con JWT y poner en práctica estos conceptos, puede utilizar jwt.io.