Autenticación: la cerradura de cada puerta
Cada puerta que has visto hasta ahora daba por hecho que el sistema confía en quien llama. En el mundo real no puede. Esta lección es la cerradura: cómo un sistema demuestra quién eres, decide qué puedes hacer y lleva la respuesta en cada petición.
Cada puerta de las lecciones anteriores tiene una cerradura. Envía la misma petición de tres maneras —sin llave, con una llave y con una llave que aquí no está permitida— y las tres respuestas del servidor te lo enseñan todo.
Al terminar esta lección
Conocerás la diferencia entre autenticación y autorización, cómo funcionan las claves de API y los tokens de OAuth, qué significan realmente el 401 y el 403, y el único hábito que previene la mayoría de los problemas de seguridad.
Dentro de la palabra “acceso” se esconden dos preguntas distintas. La autenticación pregunta ¿quién eres? La autorización pregunta ¿qué tienes permitido hacer? Son genuinamente distintas, y una API las responde con códigos de estado diferentes — que es la forma más clara de por fin no confundirlas. Mira cómo el mismo endpoint de cuenta responde a tres peticiones:
El 401 y el 403 se parecen pero significan cosas opuestas. El 401 es “no te conozco”. El 403 es “te conozco perfectamente, y la respuesta sigue siendo no”. Leerlos correctamente es la mitad de depurar los problemas de acceso.
La credencial: claves y tokens
Lo que convierte el 401 en un 200 es la línea del medio. La credencial más simple es una clave de API — una larga cadena secreta que envías en cada petición, normalmente en una cabecera Authorization: Bearer <token>. Piénsala como una contraseña para el software: cualquiera que la tenga es tú, hasta donde el servidor puede saber. Por eso justamente una clave pertenece a una variable de entorno, nunca pegada en tu código ni subida a un repositorio.
Cuando otra app necesita acceso a tus datos sin que tú le entregues tu contraseña real, el estándar es OAuth 2.0 (definido en el RFC 6749). En lugar de tu contraseña, emite un token con alcance limitado y revocable: “esta app puede leer tu calendario, nada más, hasta que digas basta”. Esa palabra —alcance (scope)— es precisamente lo que separa el 200 del 403 de arriba. El token del caso del 403 era válido; simplemente su alcance no incluía eliminar.
Quién eres te abre la puerta. El alcance decide a qué habitaciones entras.
El único hábito que importa
Concede el menor acceso que algo necesite, y nada más. La mayoría de los problemas de seguridad que he visto provenían de una credencial con mucho más alcance del que su trabajo requería — una clave que podía escribir cuando solo necesitaba leer, o una con alcance sobre todo cuando tocaba una sola cosa. Trata cada clave como la contraseña que es, apóyate en los alcances, y una credencial filtrada se convierte en un problema contenido en lugar de una catástrofe.
Basado en IETF, RFC 6749 — The OAuth 2.0 Authorization Framework y oauth.net; MDN, HTTP authentication.
0
Toca para valorar
¿Te resultó útil este capítulo?
