Autenticación vs autorización
Cada solicitud que hace un usuario plantea dos preguntas, y se responden en orden.
¿Quién es esta persona? y ¿qué puede hacer?
La primera es autenticación. La segunda es autorización. Ambas se abrevian como "auth", ambas empiezan con las mismas letras, y resuelven problemas completamente distintos.
Demostrar quién eres
La autenticación responde una sola pregunta: ¿esta persona es realmente quien dice ser?
Ya conoces los métodos comunes como usuario:
- Un nombre de usuario y contraseña.
- Iniciar sesión con Google o GitHub.
- Enviar una API key o un token junto con la solicitud.
Cada uno es una forma de presentar evidencia. El trabajo del servidor es decidir si esa evidencia es válida.
Si esto falla, alguien puede hacerse pasar por otra persona. Eso es suplantación, la S de STRIDE, y es el fallo que vuelve irrelevante cualquier otra protección, porque la aplicación termina aplicando las reglas correctas a la persona equivocada.
A la puerta no le importa qué quieres hacer. Su único trabajo es decidir si eres quien dices ser.
Decidir qué puedes hacer
La autorización se ejecuta después, y solo tiene sentido una vez resuelta la identidad:
- Un usuario que lee sus propios datos.
- Un usuario que actualiza su propio perfil.
- Un profesor que consulta los registros de sus estudiantes.
- Esa misma solicitud hecha por un estudiante, rechazada.
Si esto falla, la gente hace cosas que no debería. En STRIDE eso es elevación de privilegios; en el OWASP Top 10 es control de acceso roto, que lleva años en el primer lugar de la lista.
Estar conectado no es un permiso único. Es el punto de partida de una pregunta distinta que se hace de cero en cada solicitud.
El orden en que se ejecutan
Toda solicitud que llega a un recurso protegido pasa por ambas etapas, siempre en la misma secuencia:
solicitud ──▶ autenticación ──▶ autorización ──▶ recurso
(¿quién eres?) (¿puedes hacer esto?)Dos ejemplos aclaran el patrón. Un usuario que lee su propio perfil: llega la solicitud, la autenticación establece quién es, la autorización confirma que el perfil le pertenece, y se concede el acceso.
Un administrador que accede a un endpoint exclusivo para administradores: llega la solicitud, la autenticación establece quién es, la autorización verifica los permisos de administrador, y se concede el acceso.
Solo uno de los cuatro pasos cambia entre esos dos casos. La verificación de identidad es idéntica, y es en la verificación de permisos donde las dos solicitudes se separan.
Una autenticación fuerte con una autorización débil no es segura. Una autorización fuerte sin una autenticación sólida no tiene sentido.
Por eso la autenticación siempre va primero, y por eso un error ahí arruina todo lo que viene después.
Ponlo a prueba
Cuatro situaciones. Para cada una, decide si la falla es de autenticación o de autorización, y nombra la letra de STRIDE que le corresponde.
- Un formulario de inicio de sesión acepta cualquier contraseña para el usuario
admin. - Un cliente con sesión iniciada cambia el id en una URL y ve el pedido de otro cliente.
- Un endpoint de API acepta solicitudes sin ningún token.
- Un agente de soporte puede eliminar cuentas, algo que solo debería ser posible para administradores.
Compara tus respuestas
| # | Falla | Por qué | STRIDE |
|---|---|---|---|
| 1 | Autenticación | La app no puede saber quién está frente al teclado, así que cualquiera puede hacerse pasar por admin | Suplantación |
| 2 | Autorización | El cliente realmente es quien dice ser; nunca se verificó si el pedido le pertenece | Elevación de privilegios |
| 3 | Autenticación | No se presenta ninguna afirmación de identidad, así que el endpoint no tiene forma de saber quién llama. Un 401 es la respuesta correcta | Suplantación |
| 4 | Autorización | El agente está correctamente identificado y lo que falla es la verificación de permisos. Un 403 es el rechazo correcto | Elevación de privilegios |
El número 2 tiene nombre propio: una referencia directa insegura a objetos. En términos de OWASP, tanto el 2 como el 4 son control de acceso roto.
El dos y el cuatro son el mismo tipo de bug con distinto disfraz, y esa es parte de la razón por la que el control de acceso roto se mantiene en el primer lugar de la lista de OWASP. En ambas apps se sabía exactamente quién estaba pidiendo qué.
Hacia dónde vamos ahora
La autenticación ocurre una vez, al iniciar sesión. La autorización ocurre en cada solicitud posterior, y necesita saber quién es el usuario cada vez.
Eso deja una brecha incómoda, porque HTTP no recuerda nada de una solicitud a la siguiente.
Cómo las apps te recuerdan es el problema que crea esa brecha, y las tres familias de soluciones que veremos en el resto de esta sección.

