HTTP 401 Unauthorized
Autenticación requerida: el servidor no sabe quién eres, o tus credenciales ya no funcionan.
Qué significa HTTP 401
HTTP 401 Unauthorized significa que la solicitud fue rechazada porque carece de credenciales de autenticación válidas. A pesar del nombre, trata sobre autenticación (quién eres), no autorización (qué puedes hacer) — ese segundo caso es 403 Forbidden.
Un 401 conforme a la especificación incluye una cabecera WWW-Authenticate que describe cómo autenticarse, por ejemplo Bearer para APIs de token o Basic para autenticación HTTP clásica.
Causas comunes de los errores 401
- No se envió ninguna credencial en absoluto (falta la cabecera Authorization o la cookie de sesión).
- Un token expirado, revocado o malformado — la causa más común en APIs.
- Esquema de autenticación incorrecto (enviar una clave de API donde se espera un token Bearer).
- Una sesión cerrada: las cookies expiraron o se borraron mientras una pestaña seguía abierta.
- Desfase de reloj que hace que los JWT de corta duración parezcan expirados al llegar.
Cómo solucionarlo como usuario
- Inicia sesión de nuevo — lo más probable es que la sesión haya expirado.
- Si entra en bucle, borra las cookies del sitio e inicia sesión de nuevo.
- Comprueba que la URL no sea un área de administración o staging que requiera una cuenta que no tienes.
Cómo solucionarlo como desarrollador
- Renueva o vuelve a emitir tokens expirados; implementa la renovación automática de tokens en los clientes de la API.
- Envía la cabecera Authorization exactamente en el formato esperado (“Bearer <token>” — la palabra y el espacio importan).
- Devuelve 401 solo para credenciales faltantes/inválidas y 403 para usuarios válidos sin permisos, para que los clientes puedan reaccionar correctamente.
- Verifica la sincronización horaria del servidor (NTP) cuando la validación “exp” de JWT falla inesperadamente.
Ejemplo de respuesta
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="api", error="invalid_token", error_description="expired"
Preguntas frecuentes
¿Cuál es la diferencia entre 401 y 403?
401 significa que el servidor no tiene credenciales válidas para ti — inicia sesión o renueva el token. 403 significa que sabe quién eres y aun así se niega.
¿Por qué recibo 401 con un token válido?
Causas comunes: token expirado, formato de cabecera incorrecto, token emitido para un entorno o audiencia diferente, o desfase del reloj del servidor.
¿Un inicio de sesión fallido debería devolver 401?
Para las APIs, sí, con un cuerpo explicativo. Los formularios de inicio de sesión web normalmente devuelven 200 con un mensaje de error en la página en su lugar.