Generador de Basic Auth

Genera una cabecera de autenticación HTTP Basic a partir de usuario y contraseña, obtén un comando curl listo para pegar y decodifica un token Basic existente.

Crea una cabecera de autenticación HTTP Basic, o decodifica una. Introduce usuario y contraseña para obtener la cabecera Authorization, el token base64 en crudo y un comando curl listo para pegar en la terminal. El decodificador de abajo revierte un token existente.

Decodificar un token existente

Todo se calcula en tu navegador y no se transmite nada. Aun así, evita pegar credenciales de producción en cualquier página web, incluida esta.

Cómo funciona realmente la autenticación HTTP Basic

El mecanismo

La autenticación Basic, definida en RFC 7617, es el esquema más sencillo de HTTP. El cliente une usuario y contraseña con dos puntos, codifica el resultado en base64 y lo envía en una cabecera:

Authorization: Basic YWxpY2U6czNjcjN0

Cuando un servidor quiere credenciales responde 401 Unauthorized con una cabecera WWW-Authenticate: Basic realm="...", y el navegador muestra su diálogo de acceso nativo. No hay negociación, ni nonce, ni caducidad: cada petición lleva la misma cabecera.

Base64 no es cifrado

Este es el punto que hay que interiorizar. Base64 es una codificación de transporte reversible, sin clave y sin secreto. Cualquiera que vea la cabecera puede decodificarla al instante, que es justo lo que hace el decodificador de esta página. Por tanto Basic auth no aporta ninguna confidencialidad por sí misma y solo debe usarse sobre HTTPS, donde TLS protege la petición completa. Sobre HTTP plano equivale a enviar la contraseña en claro.

La regla de los dos puntos

El usuario no puede contener dos puntos, porque el primero es el separador. La contraseña puede llevar los que quiera: el decodificador corta en el primero y trata el resto como contraseña. Si tu nombre de usuario necesita realmente unos dos puntos, Basic auth no sirve y hace falta otro esquema.

Codificación de caracteres

La especificación original era ambigua fuera de ASCII, lo que históricamente rompía las contraseñas no ASCII entre clientes y servidores. RFC 7617 añadió el parámetro charset="UTF-8" para que el servidor declare su expectativa, y en la práctica todas las pilas modernas usan UTF-8. Esta herramienta codifica a bytes UTF-8 antes del base64, igual que los navegadores actuales.

Dónde sigue teniendo sentido

Basic auth sigue siendo razonable para llamadas máquina a máquina en redes internas, para proteger rápidamente un entorno de pruebas tras nginx o Apache, para tareas de CI que necesitan una credencial simple, y como transporte de claves de API donde la clave va en el campo de usuario y la contraseña queda vacía o con un marcador como x. Varias APIs de pago y de correo usan exactamente ese patrón.

Es mala elección para el acceso de usuarios finales en un sitio público. No hay cierre de sesión, el navegador cachea las credenciales durante la sesión, el diálogo no se puede estilizar y no hay forma de añadir autenticación multifactor o limitación por sesión.

Precauciones prácticas

Las credenciales incrustadas en una URL —usuario:clave@ejemplo.com— están obsoletas y la mayoría de navegadores las bloquean o eliminan, porque se filtran al historial, los registros y las cabeceras referrer. Pasar -u usuario:clave a curl también deja la contraseña en el historial del shell y en la lista de procesos, donde otros usuarios de la máquina pueden verla; es mejor usar -u usuario y dejar que curl pregunte, o leer el valor de una variable de entorno.

Aviso de código abierto: implementado con las APIs estándar btoa, atob, TextEncoder y TextDecoder, siguiendo RFC 7617. No se usa ninguna biblioteca de terceros.

Preguntas frecuentes

¿Es segura la autenticación Basic?
Solo sobre HTTPS. La codificación base64 no ofrece ninguna protección: es trivialmente reversible. Con TLS las credenciales viajan protegidas como cualquier otro dato; sin TLS son texto plano en la práctica.
¿Por qué base64 si no es cifrado?
Su propósito es la seguridad de transporte, no el secreto. Base64 garantiza que la credencial contenga solo caracteres ASCII válidos en una cabecera, de modo que dos puntos, un espacio o un byte no ASCII en la contraseña no corrompan la cabecera.
¿Puede el usuario contener dos puntos?
No. Los primeros dos puntos separan usuario de contraseña, así que incluirlos en el usuario vuelve ambigua la credencial. Las contraseñas sí pueden contener cuantos haga falta.
¿Cómo se cierra sesión en Basic auth?
No hay un mecanismo adecuado. Los navegadores cachean las credenciales durante la sesión y los apaños habituales son cerrar el navegador o devolver un 401 desde un endpoint especial.
¿Caduca el token?
Nunca. La misma cabecera es válida hasta que cambie la contraseña, por lo que filtrar un token Basic es tan grave como filtrar la contraseña. Rota las credenciales si alguna queda expuesta.
¿Se envían mis credenciales a algún sitio?
No. La codificación y la decodificación se ejecutan por completo en tu navegador. Aun así, conviene no pegar nunca credenciales reales de producción en una página web.