Nivel Principiante
Imagina que quieres entrar a un juego en internet, pero no quieres crear una cuenta nueva. El juego te pregunta si puedes usar tu cuenta de Google o Facebook para entrar. OAuth es el sistema que permite al juego obtener un permiso de Google para saber quién eres, sin que tengas que darle tu contraseña. JWT es como un pase VIP especial y sellado que el juego te da después de que entras, y que te permite acceder a diferentes áreas del juego sin tener que identificarte de nuevo.
Nivel Intermedio
La autenticación es el proceso de verificar la identidad de un usuario. En el desarrollo web moderno, esto se gestiona a menudo a través de protocolos y estándares de seguridad. OAuth 2.0 (Open Authorization) es un estándar de autorización que permite a una aplicación obtener acceso limitado a los datos de un usuario en otra aplicación (por ejemplo, acceder a los datos de tu perfil de Google). OAuth no es un protocolo de autenticación en sí mismo, sino un marco para la autorización; le dice a una aplicación que tienes permiso para acceder a ciertos datos, pero no verifica tu identidad.
Para gestionar la autenticación, se combina a menudo con un JWT (JSON Web Token). Un JWT es un estándar abierto, compacto y seguro para transmitir información entre partes como un objeto JSON. Una vez que un usuario se autentica, el servidor genera un JWT que contiene información sobre el usuario y un «sello» digital (una firma criptográfica). El cliente (navegador o aplicación) almacena este token y lo envía en cada solicitud a la API para demostrar que está autenticado, sin necesidad de consultar una base de datos en cada petición.
Nivel Avanzado
Técnicamente, OAuth 2.0 es un protocolo de delegación de autorización que define un flujo de interacción entre cuatro roles principales: el dueño del recurso (el usuario), el cliente (la aplicación que solicita acceso), el servidor de autorización (donde el usuario da su consentimiento, como Google) y el servidor de recursos (donde se encuentran los datos protegidos). El flujo más común es el de «código de autorización», donde el cliente solicita un permiso, el usuario da su consentimiento y el servidor de autorización devuelve un código. Este código se intercambia por un token de acceso, que es lo que el cliente usa para autenticarse y acceder a los recursos.
JWT (definido en la RFC 7519) consta de tres partes separadas por puntos (.):
- Header (Cabecera): Describe el tipo de token y el algoritmo de firma utilizado.
- Payload (Carga Útil): Contiene las «declaraciones» o claims (información sobre el usuario), como su ID, rol o permisos.
- Signature (Firma): Se crea combinando el header, el payload y una clave secreta. Esta firma es crucial, ya que permite al servidor verificar que el token no ha sido alterado.
Los JWT se utilizan para implementar la autenticación sin estado (stateless), lo que hace que la autenticación sea más escalable. Como el servidor no necesita almacenar el estado de la sesión, puede procesar las peticiones más rápidamente. La seguridad de este sistema reside en la confidencialidad de la clave secreta y la expiración del token. Un token comprometido puede ser una vulnerabilidad, por lo que se implementan tokens de refresco y tiempos de vida cortos para mitigar el riesgo.
« Volver al índice del glosario