Autenticación y autorización: la diferencia entre “quién eres” y “qué puedes hacer”

Aprende la diferencia entre autenticación y autorización, y cómo funcionan las sesiones, los tokens y JWT en una aplicación web moderna.

Compartir en Linkedin Compartir en WhatsApp

Tiempo estimado de lectura: 7 minutos

Imagen del artículo Autenticación y autorización: la diferencia entre “quién eres” y “qué puedes hacer”

Cada vez que inicias sesión en una aplicación, ocurren dos procesos distintos que a menudo se confunden: la autenticación y la autorización. Entender la diferencia es una de las bases del desarrollo backend y de la seguridad de cualquier sistema, desde una tienda en línea hasta una app bancaria.

Dos preguntas diferentes

La forma más sencilla de recordarlo es pensar en un edificio de oficinas:

  • Autenticación: responde a “¿quién eres?”. Es el momento en que muestras tu credencial en la entrada para demostrar tu identidad.
  • Autorización: responde a “¿qué puedes hacer?”. Aunque ya estés dentro, tu tarjeta quizá solo abra algunas puertas y no otras.

En una aplicación, la autenticación verifica que el usuario es quien dice ser, normalmente con correo y contraseña. La autorización decide, una vez identificado, a qué datos y acciones tiene acceso: ver su propio perfil, editar un producto o administrar a otros usuarios.

ConceptoPregunta que respondeEjemploCuándo ocurre
Autenticación¿Quién eres?Iniciar sesión con contraseña o códigoAl entrar al sistema
Autorización¿Qué puedes hacer?Acceder al panel de administración solo si eres administradorEn cada petición protegida

Cómo se autentica un usuario

Los métodos de autenticación se suelen agrupar por el tipo de prueba que piden:

  • Algo que sabes: una contraseña o un PIN.
  • Algo que tienes: un teléfono que recibe un código o una llave de seguridad física.
  • Algo que eres: una huella dactilar o el reconocimiento facial.

Combinar dos o más de estas categorías se llama autenticación multifactor y reduce mucho el riesgo si una contraseña se filtra. Además, las contraseñas nunca deben guardarse en texto plano: se almacenan transformadas con funciones de hash diseñadas para este fin, como bcrypt o Argon2, que dificultan que alguien las recupere aunque acceda a la base de datos.

¿Y después de iniciar sesión? Sesiones y tokens

El protocolo HTTP no recuerda nada entre una petición y la siguiente. Por eso, tras autenticarte, el servidor necesita una forma de reconocerte en cada solicitud sin pedirte la contraseña cada vez. Existen dos enfoques habituales.

Sesiones en el servidor

El servidor crea un registro de sesión y entrega al navegador un identificador, normalmente dentro de una cookie. En cada petición, el navegador envía esa cookie y el servidor consulta su registro para saber quién eres. Es un modelo sencillo y fácil de invalidar: si quieres cerrar una sesión, basta con borrar el registro.

Tokens firmados

En lugar de guardar un registro, el servidor entrega un token firmado que contiene la información necesaria. El cliente lo envía en cada petición, normalmente en la cabecera Authorization, y el servidor solo comprueba que la firma sea válida. Este enfoque encaja bien con APIs y aplicaciones móviles.

Qué es un JWT

El formato de token más conocido es el JWT (JSON Web Token). Se compone de tres partes separadas por puntos:

  1. Cabecera: indica el tipo de token y el algoritmo de firma.
  2. Carga útil (payload): contiene datos llamados “claims”, como el identificador del usuario, su rol y la fecha de expiración.
  3. Firma: permite verificar que el token no fue modificado.

Un detalle importante que se malinterpreta a menudo: el contenido de un JWT está codificado, no cifrado. Cualquiera que tenga el token puede leer su carga útil. La firma solo garantiza que nadie la alteró. Por eso nunca debes incluir contraseñas ni datos sensibles dentro de un JWT.

Cómo funciona la autorización

Una vez que el sistema sabe quién eres, debe decidir qué te permite hacer. Hay modelos muy usados:

  • Control por roles (RBAC): cada usuario tiene uno o varios roles, como “lector”, “editor” o “administrador”, y cada rol tiene permisos asociados.
  • Permisos específicos: se asignan acciones concretas, como “crear artículo” o “borrar comentario”, a cada usuario o grupo.
  • Propiedad del recurso: un usuario puede editar solo lo que le pertenece, como sus propios pedidos.

La regla de oro es validar la autorización siempre en el servidor. Ocultar un botón en la interfaz no protege nada: cualquier persona puede enviar una petición directa a la API, así que el backend debe comprobar los permisos en cada operación.

Códigos de respuesta que debes conocer

CódigoSignificadoCuándo se usa
401No autenticadoFaltan credenciales o el token no es válido
403ProhibidoEl usuario está identificado, pero no tiene permiso

Buenas prácticas básicas

  • Usa siempre HTTPS para que credenciales y tokens no viajen en claro.
  • Haz que los tokens caduquen en poco tiempo y renueva el acceso con un mecanismo controlado.
  • Aplica el principio de mínimo privilegio: cada usuario recibe solo los permisos que necesita.
  • Limita los intentos de inicio de sesión para frenar los ataques de fuerza bruta.
  • No programes tu propio sistema criptográfico: apóyate en bibliotecas y servicios probados.

Un ejemplo completo del flujo

Imagina una API de una tienda en línea. Primero, el usuario envía su correo y contraseña a una ruta de inicio de sesión. El servidor comprueba el hash de la contraseña y, si coincide, responde con un token. A partir de ahí, cada petición incluye ese token. Cuando el cliente intenta ver sus pedidos, el servidor verifica la firma (autenticación) y confirma que esos pedidos pertenecen a ese usuario (autorización). Si intentara abrir el panel de administración sin el rol adecuado, recibiría un 403.

Conclusión

Autenticar es comprobar la identidad; autorizar es decidir qué permite esa identidad. Con sesiones o tokens como JWT, y con permisos siempre validados en el servidor, puedes construir aplicaciones más seguras. Si quieres profundizar en estos conceptos de forma práctica, descubre los cursos de desarrollo backend y de seguridad de la información de Cursa.

Qué Es un Motor de Videojuegos y Cómo Funciona el Bucle de Juego

Descubre qué hace un motor de videojuegos, cómo funciona el bucle de juego y qué papel cumplen el renderizado, la física y el delta time.

Claves Primarias y Foráneas: Cómo se Relacionan las Tablas en una Base de Datos

Aprende qué son las claves primarias y foráneas, cómo conectan tablas, qué tipos de relaciones existen y por qué protegen la integridad de tus datos.

Qué Es el DNS: Cómo tu Navegador Encuentra un Sitio Web en Milisegundos

Entiende cómo funciona el sistema de nombres de dominio, qué son los registros A, CNAME y MX, y por qué a veces los cambios tardan.

Cifrado de Extremo a Extremo: Cómo Funciona y Qué Protege Realmente

Explicación sencilla del cifrado de extremo a extremo: claves pública y privada, qué protege, qué no protege y por qué importa.

Memoria RAM y almacenamiento: por qué no son lo mismo

Diferencias entre RAM y disco, qué hace cada uno, qué pasa cuando falta memoria y cuál conviene ampliar primero.

Qué es el DOM y Cómo lo Usa JavaScript para Cambiar una Página Web

Descubre qué es el DOM, cómo el navegador convierte el HTML en un árbol de nodos y cómo JavaScript lo modifica en tiempo real.

La Regla 3-2-1 de las Copias de Seguridad: Cómo Proteger tus Archivos de Verdad

Descubre en qué consiste la regla 3-2-1 de respaldo, los tipos de copia que existen y los errores más comunes al proteger la información.

Diagramas de flujo y pseudocódigo: cómo planificar un programa antes de escribirlo

Aprende a usar diagramas de flujo y pseudocódigo para diseñar algoritmos claros antes de escribir una sola línea de código.