¿Cómo funciona la autenticación de token Web JSON (JWT)?

Encabezado

El encabezado JWT consiste en el tipo de token y el algoritmo utilizados para firmar y codificar. Los algoritmos pueden ser HMAC, SHA256, RSA, HS256 o RS256.

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

Carga útil

La carga útil consiste en los datos de sesión llamados notificaciones. A continuación se presentan algunas de las afirmaciones estándar que podemos usar,

  1. Emisor(iss)
  2. Sujeto (sub)
  3. Audiencia (aud)
  4. Tiempo de caducidad (exp)
  5. Emitido en (iat)
{
"sub": "user10001",
"iat": 1569302116
}

Las reclamaciones personalizadas también se pueden incluir en el conjunto de reclamaciones. Al usar conjuntos de notificaciones personalizados,

  • No coloque grandes datos en conjuntos de reclamaciones. Conjuntos de reclamaciones diseñados para ser compactos.
  • No ponga información sensible, ya que JWT se puede decodificar fácilmente.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}

Firma

La firma es la parte más importante de un token web JSON(JWT). La firma se calcula codificando el encabezado y la carga útil mediante la codificación Base64url y concatenándolos con un separador de punto. Que luego se da al algoritmo criptográfico.

// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )

Por lo tanto, cuando el encabezado o la carga útil cambian, la firma debe calcularse de nuevo. Solo el Proveedor de identidad(IdP) tiene la clave privada para calcular la firma, lo que evita la manipulación del token.

¿Cómo funciona?

Básicamente, el proveedor de identidades(IdP) genera una identidad de usuario certificadora JWT y el servidor de recursos decodifica y verifica la autenticidad del token utilizando sal secreta / clave pública.

  1. Inicio de sesión de usuario con nombre de usuario y contraseña o google / facebook.
  2. El servidor de autenticación verifica las credenciales y emite un jwt firmado con una sal secreta o una clave privada.
  3. El cliente del usuario utiliza el JWT para acceder a recursos protegidos pasando el JWT en el encabezado de autorización HTTP.
  4. El servidor de recursos verifica la autenticidad del token utilizando la sal secreta / clave pública.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

More: