Un JSON Web Token (JWT) es un estándar abierto para transmitir información de manera segura entre partes como un objeto JSON. A menudo se usa para autenticar usuarios y transmitir información de manera segura entre un cliente y un servidor.
Cuando un usuario inicia sesión, el servidor crea un JWT, que está compuesto por tres partes: un encabezado, un payload y una firma.
El encabezado generalmente consiste en el tipo de token y el algoritmo criptográfico utilizado para asegurar el token. Luego, el encabezado se codifica en Base64Url.
El payload contiene las declaraciones, que son afirmaciones sobre el usuario y datos adicionales. Las declaraciones pueden incluir información como el ID del usuario, nombre de usuario, rol y cualquier otro dato relevante. El payload también se codifica en Base64Url.
La firma se crea codificando el encabezado, el payload y una clave secreta usando el algoritmo especificado en el encabezado. Esto asegura la integridad del token y permite al servidor verificar su autenticidad. La firma se adjunta al encabezado y al payload codificados para formar el JWT completo.
Una vez que se crea el JWT, se envía al cliente, quien lo almacena y lo envía junto con solicitudes subsiguientes. El cliente típicamente incluye el JWT en el encabezado Authorization
de la solicitud HTTP como un token Bearer.
Al recibir el JWT, el servidor verifica su firma usando la clave secreta. Si la firma es válida, el servidor puede descodificar la información en el encabezado y el payload para realizar la autenticación del usuario. El servidor puede confiar en la información del JWT sin tener que consultar una base de datos o realizar verificaciones de autenticación adicionales. Esto hace que los JWTs sean un mecanismo de autenticación eficiente y escalable.
La autenticación basada en tokens es un método de autenticación donde se utiliza un token de acceso para acceder a recursos en lugar de usar un nombre de usuario y contraseña. El token normalmente es emitido por un servidor de autenticación y se envía junto con cada solicitud como prueba de autenticación. La autenticación basada en tokens ofrece varias ventajas sobre la autenticación tradicional con nombre de usuario y contraseña:
OAuth 2.0 es un estándar abierto y marco de autorización que permite a una aplicación de terceros obtener acceso limitado a los recursos de un usuario. Se utiliza comúnmente para permitir que los usuarios concedan permisos a aplicaciones externas para acceder a sus datos en plataformas de terceros. OAuth 2.0 se basa en JSON Web Tokens (JWTs) para autenticación y autorización.
OAuth 2.0 involucra a varias partes, como el propietario del recurso (el usuario que posee los recursos), el cliente (la aplicación de terceros), el servidor de autorización (responsable de emitir tokens de acceso) y el servidor de recursos (contiene los recursos protegidos).
Durante el flujo de OAuth 2.0, el cliente obtiene una concesión de autorización del propietario del recurso. El cliente luego intercambia esta concesión con el servidor de autorización para obtener un token de acceso. El token de acceso es un JWT que contiene la información necesaria para acceder a los recursos protegidos en el servidor de recursos. Este token es luego utilizado por el cliente para acceder a los recursos del usuario.
Al usar OAuth 2.0 y JWTs, las aplicaciones pueden proporcionar acceso seguro y controlado a los datos del usuario en una amplia gama de plataformas.