¿Cuál es la diferencia entre JWT y Bearer Token?

105

Estoy aprendiendo algo sobre Autorización como Basic, Digest, OAuth2.0, JWTs y Bearer Token.

Ahora tengo una pregunta.

Sabe que los JWT se utilizan como Access_Token en el estándar OAuth2.0. Los JWT aparecen en RFC 7519 y Bearer Token está en RFC 6750.

Por ejemplo, el Portador:

Authorization: Bearer <token>

Solía ​​enviar token al servidor por AJAX o agregar token a la cadena de consulta de la URL. Sé que también se puede enviar un token agregándolo a un encabezado de solicitud. ¿Eso significa que el token debe agregarse al encabezado del Portador de autorización?

¿Podría decirme la relación entre los JWT y el Bearer Token? Muchas gracias.

laoqiren
fuente

Respuestas:

85

JWT es un estándar de codificación para tokens que contiene una carga útil de datos JSON que se puede firmar y cifrar.

JWT se puede usar para muchas cosas, entre las que se encuentran los tokens de portador, es decir, una pieza de información que puede presentar a algún servicio que en virtud de que lo tiene (usted es el "portador") le otorga acceso a algo.

Los tokens de portador se pueden incluir en una solicitud HTTP de diferentes maneras, una de ellas (probablemente la preferida) es el encabezado de autorización. Pero también puede ponerlo en un parámetro de solicitud, una cookie o el cuerpo de la solicitud. Eso es principalmente entre usted y el servidor al que está intentando acceder.

Thilo
fuente
Entonces, cómo analizar el token en el encabezado de autorización, hay un portador, tengo que usar String.slice (), ¿hay algún middleware para analizarlo?
laoqiren
Estoy usando Node.js
laoqiren
Use el auth-headerpaquete si desea un analizador mínimo
Demurgos
1
O simplemente use String.slice () :)
Paul Siersma
138

Respuesta corta

Los JWT son una forma conveniente de codificar y verificar reclamaciones .

Un token de portador es solo una cadena, potencialmente arbitraria, que se usa para la autorización.

Contexto (hora del cuento)

Hace unos años, antes de la revolución JWT, a <token>era solo una cadena sin significado intrínseco, por ejemplo, 2pWS6RQmdZpE0TQ93X. Luego, ese token se buscó en una base de datos, que contenía los reclamos para ese token. La desventaja de este enfoque es que se requiere acceso a la base de datos (o un caché) cada vez que se usa el token.

Los JWT codifican y verifican (mediante la firma) sus propios reclamos . Esto permite a la gente emitir JWT de corta duración que son apátridas (léase: autónomo, no dependa de nadie más). No necesitan golpear la base de datos. Esto reduce la carga de la base de datos y simplifica la arquitectura de la aplicación porque solo el servicio que emite los JWT debe preocuparse por alcanzar la capa de DB / persistencia (la refresh_tokenque probablemente haya encontrado).

rmharrison
fuente
Gracias, y ¿qué hay de Mac en Autorización? ¿Mac y Bearer son lo mismo?
laoqiren
Se responde mejor en otro lugar, por ejemplo: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison