Autenticación vs. Autorización: ¿cuál es la diferencia?

Actualizado: agosto de 2026

La autenticación es la verificación de quién eres; la autorización es la decisión de qué puedes hacer en cada solicitud. Todo sistema seguro necesita ambas. El hotel lo hace concreto: tu identificación en la recepción es autenticación; la tarjeta que abre la habitación 412 — y solo la 412 — es autorización. Son preguntas distintas, formuladas en momentos distintos, respondidas por maquinaria distinta, y fallan de maneras distintas — por eso los sistemas que las difuminan terminan sufriendo ambos tipos de brecha.

Puntos clave

PreguntaRespuesta
Autenticación (AuthN)¿Quién eres? — credenciales → identidad, una vez por sesión
Autorización (AuthZ)¿Qué puedes hacer? — políticas → permitir/denegar, cada solicitud
Los códigos HTTP401 = no autenticado (un nombre engañoso) · 403 = conocido y rechazado
La división de protocolosOIDC/SAML/passkeys = authn · scopes de OAuth/RBAC/ACLs = authz
La división de fallasAuthN falla como robo de cuenta · AuthZ falla como escalada de privilegios

Cómo corren la autenticación y la autorización en una misma solicitud

1  POST /login  (credenciales + MFA)         ── AUTENTICACIÓN, una vez
   ← token de sesión / cookie: identidad establecida

2  GET /documents/xKd91m                     ── cada solicitud posterior:
   a · token validado       → identidad re-establecida            (maquinaria authn)
   b · permiso evaluado     → ¿puede ADA leer ESTE documento?     (decisión authz)

   → 200  ambas pasaron
   → 401  token ausente/inválido — desafío WWW-Authenticate; iniciar sesión lo arregla
   → 403  token válido, permiso denegado — volver a iniciar sesión no cambia nada
   → 404  algunas APIs ocultan por completo los objetos prohibidos (RFC 9110 lo permite)

La misma división en el código de la aplicación — inicias sesión una vez y te juzgan por operación:

// JavaScript / Node.js — Back4app JS SDK
// Authentication: once — who are you?
const user = await Parse.User.logIn('ada', password); // session token issued

// Authorization: every request — may YOU do THIS?
const doc = await new Parse.Query('Document').get('xKd91m');
// found if an ACL entry grants ada read · "not found" if not

doc.set('title', 'Renamed');
await doc.save(); // succeeds only if an entry grants ada WRITE

Autenticación vs. autorización, lado a lado

AutenticaciónAutorización
Pregunta¿Quién eres?¿Qué puedes hacer?
EntradasCredenciales: contraseñas, códigos de MFA, passkeys, biometríaPolíticas: roles, ACLs, atributos, scopes
FrecuenciaUna vez por sesión (+ step-up para acciones sensibles)Cada solicitud, cada objeto
ProduceUna sesión o un tokenUna decisión de permitir/denegar
El usuario la veSí — la pantalla de loginRara vez — trabaja de forma invisible
Dónde correEl borde: capa de identidad, flujo de loginEn lo profundo: capa de negocio y datos, junto a los datos
ProtocolosOpenID Connect, SAML, WebAuthnScopes de OAuth 2.0, motores RBAC/ABAC/ReBAC
Token abanderadoID token — quién se autenticóAccess token — qué puede hacer el portador
Falla comoRobo de cuentaEscalada de privilegios, exposición de datos

Dos filas merecen sus notas al pie. Dónde corre: la autenticación se concentra de forma natural en el borde — un flujo de login, un proveedor de identidad — mientras que la autorización pertenece junto a los datos que protege, porque “¿puede este usuario tocar este objeto?” necesita el objeto. Falla como: los modelos de amenaza son disjuntos — el credential stuffing y el phishing atacan la autenticación (por eso MFA es la defensa authn de mayor palanca), mientras que la broken object-level authorization encabeza las listas de seguridad de APIs como la falla authz por antonomasia: usuario con sesión, objeto equivocado, nadie verificó.

Autenticación una vez, autorización en cada solicitudUn usuario se autentica una vez con credenciales y recibe un token de sesión. Cada solicitud posterior pasa por la validación del token, que re-establece la identidad, y luego por una verificación de autorización por solicitud contra roles, ACLs y políticas antes de servir el recurso; las fallas devuelven 401 por autenticación ausente y 403 por permiso denegado.

credenciales, una vez

sesión / token

no → 401

no → 403

Usuario

Autenticación
login + MFA

Cada solicitud

¿Token válido?

401 + WWW-Authenticate

¿Autorizado para ESTE
recurso + acción?

403 (o 404 para ocultar)

Recurso

Un usuario se autentica una vez con credenciales y recibe un token de sesión. Cada solicitud posterior pasa por la validación del token, que re-establece la identidad, y luego por una verificación de autorización por solicitud contra roles, ACLs y políticas antes de servir el recurso; las fallas devuelven 401 por autenticación ausente y 403 por permiso denegado.

401 y 403, con precisión

Los códigos de estado son la distinción vestida de números, y el RFC 9110 es exacto al respecto. 401 Unauthorized es el nombre engañoso más duradero de la historia: significa no autenticado — la solicitud “carece de credenciales de autenticación válidas”, la respuesta debe llevar un desafío WWW-Authenticate, y presentar credenciales puede arreglarlo. 403 Forbidden significa que el servidor entendió exactamente quién preguntaba y se niega de todos modos — re-autenticarse es inútil por definición. Y la especificación bendice una tercera jugada que los equipos de seguridad adoran: responder 404 en lugar de 403, para que un recurso prohibido no confirme su propia existencia. Acertar con los códigos no es pedantería; los clientes construyen su lógica de retry y re-login sobre ellos, y un 403 que debería ser un 401 manda a los usuarios contra un muro en lugar de a un formulario de login.

OAuth, OIDC y la confusión eterna

La confusión tiene una respuesta con forma de especificación. El título de OAuth 2.0 es “The OAuth 2.0 Authorization Framework” — mueve permisos con scopes, y la especificación de OpenID Connect existe precisamente porque OAuth por sí solo “es incapaz de proporcionar información sobre la autenticación de un usuario final”. OIDC agrega la capa de identidad: un ID token que afirma quién se autenticó, distinto del access token que afirma qué puede hacer el portador. Cada botón de “Iniciar sesión con…” es OIDC haciendo autenticación sobre la plomería de autorización de OAuth — un flujo, ambos conceptos, en capas limpias en lugar de confundidos.

Los tres errores que llegan a producción

Autorización del lado del cliente. Ocultar el botón de eliminar es diseño de interfaz; que el servidor decida si el delete se ejecuta es seguridad. Según OWASP: denegar por defecto, aplicar del lado del servidor y tratar los checks del cliente como pistas de UX. Con sesión ≠ permitido. Verificar la autenticación pero no la propiedad del objeto — /documents/42 servido a cualquier sesión válida — es broken object-level authorization, la clase de vulnerabilidad de APIs más común. La verificación es por objeto, por solicitud, sin excepciones. Orden del middleware. Autenticar primero, autorizar después, en el código como en el concepto: el middleware de identidad establece quién, y luego los handlers preguntan si — y una verificación de autorización que corre antes de establecer la identidad autoriza en silencio al anónimo.

Casos de uso comunes

  • Login de la app + permisos sobre datos — el emparejamiento cotidiano: un flujo de auth, reglas por objeto para todo lo que sigue.
  • Diseño de APIs — semántica de 401/403, tokens con scopes y checks a nivel de objeto como el lenguaje de errores del contrato.
  • SaaS multi-tenant — autenticación compartida entre tenants; autorización acotada con firmeza dentro de cada uno.
  • Herramientas de admin y soporte — autenticación step-up y autorización elevada, deliberadamente como eventos separados.
  • Contenido público + privado — la lectura anónima como regla de autorización, prueba de que los dos conceptos corren de forma independiente.

¿Qué verificación te falta? Matriz de decisión

SíntomaPieza faltante
Cualquiera con un enlace lee datos privadosAutorización — checks por objeto
Las contraseñas robadas siguen funcionandoAutenticación — agrega MFA
Los usuarios ven muros de 403 tras errores de loginCódigo equivocado — ese flujo es un 401
Cualquier usuario con sesión puede llamar APIs de adminAutorización — roles, denegar por defecto
”Iniciar sesión con…” tratado como autorizaciónMezcla de conceptos — OIDC autentica; los scopes autorizan
Botones ocultos pero endpoints abiertosAutorización aplicada solo en el cliente

Limitaciones y trade-offs

  • La división es conceptual, no siempre arquitectónica. Las apps pequeñas razonablemente corren ambas en un solo stack de middleware; la disciplina está en mantener los checks separados, no los servidores.
  • Una authn fuerte no rescata a una authz débil. Las passkeys y MFA verifican la identidad a la perfección para un sistema que luego deja a cualquiera leer cualquier cosa — las fallas son independientes.
  • La autorización por solicitud tiene un costo. Cachear decisiones, empujar las reglas hacia la capa de datos e indexar permisos son la manera de que “verificar todo” siga siendo rápido.
  • El step-up difumina la línea de tiempo. Las acciones sensibles re-autentican a mitad de sesión — la autenticación no es estrictamente “una vez”, es “una vez por nivel de garantía”.
  • La deriva de vocabulario causa bugs reales. Los equipos que dicen “auth” para ambas mitades escriben tickets, pruebas y códigos de error que las confunden; las palabras son la defensa más barata.

Autenticación y autorización en Back4app

Back4app es una plataforma open-source de Backend as a Service (BaaS) que combina base de datos gestionada, APIs REST y GraphQL generadas automáticamente, autenticación, almacenamiento de archivos y funciones serverless con Cloud Code. La arquitectura de la plataforma es la división: la clase User, las sesiones, el login social y el adaptador de MFA responden quién eres, produciendo un token de sesión revocable — y luego las ACLs, los permisos a nivel de clase y los roles responden qué puedes hacer, evaluados del lado del servidor en cada solicitud REST, GraphQL y Live Query, exactamente como muestran las pestañas de código: inicias sesión una vez y te juzgan por operación. La sección de errores se vuelve estructural: la autorización no puede quedar del lado del cliente porque Back4app la aplica detrás de la API, los objetos no autorizados vuelven como no encontrados en lugar de confirmar su existencia, y denegar por defecto es un checkbox en una clase. Las dos preguntas se mantienen separadas porque la plataforma nunca deja que se fusionen.

Preguntas frecuentes

¿Cuál es la diferencia entre autenticación y autorización en términos simples?

La autenticación verifica quién eres — credenciales, códigos, biometría. La autorización decide qué puedes hacer — roles, permisos, políticas. Versión hotelera: mostrar tu identificación en la recepción es autenticación; la tarjeta que abre tu habitación pero no la suite presidencial es autorización.

¿Qué va primero, la autenticación o la autorización?

La autenticación, casi siempre — un sistema no puede otorgar permisos a un desconocido. La excepción instructiva: los recursos públicos son decisiones de autorización tomadas sin autenticación; "cualquiera puede leer esto" sigue siendo una regla de permisos, aplicada al anónimo.

¿Cuál es la diferencia entre un error 401 y un 403?

401 significa que la solicitud carece de credenciales de autenticación válidas — pese a su nombre oficial "Unauthorized", en realidad significa no autenticado, e iniciar sesión puede arreglarlo. 403 significa que el servidor sabe exactamente quién eres y aun así se niega — permiso denegado, y volver a iniciar sesión no cambia nada.

¿Puede haber autorización sin autenticación?

Sí — cada endpoint público es la prueba: el acceso anónimo es una regla de autorización evaluada sin identidad. Lo inverso también existe: autenticado pero sin autorización para nada, que es exactamente lo que debería ser una cuenta recién creada sin roles.

¿OAuth es autenticación o autorización?

Autorización — el título de la propia especificación es "The OAuth 2.0 Authorization Framework", y la especificación de OpenID Connect existe precisamente porque OAuth por sí solo no puede atestiguar quién se autenticó. Cada botón real de "Iniciar sesión con…" es OIDC agregando una capa de identidad sobre la plomería de OAuth.

¿Cómo trabajan juntas la autenticación y la autorización en una solicitud?

Te autenticas una vez en el login, lo que produce una sesión o un token. Después, en cada solicitud, el servidor re-establece la identidad a partir de ese token y evalúa la autorización para el recurso y la acción específicos. Una vez por sesión frente a cada solicitud — esa asimetría es toda la arquitectura.

¿Cuáles son los errores más comunes?

Confundir las dos en el manejo de errores (un 403 donde corresponde un 401), aplicar la autorización en el cliente (ocultar botones es UX, no seguridad) y verificar que un usuario inició sesión pero no que es dueño del objeto específico — el hueco de broken object-level authorization que encabeza las listas de seguridad de APIs.

Términos relacionados

Compara con

Lecturas recomendadas

¿Listo para construir tu backend?

Empieza tu proyecto en Back4app en minutos — base de datos, autenticación, APIs y Cloud Code incluidos. Sin tarjeta de crédito.

Escrito y revisado por Back4app Engineering, Back4app Engineering · Publicado el 2026-08-28