Subir un archivo
  1. base64hub
  2. Herramientas web y de tokens
  3. Encabezado Basic Auth

Generador de encabezados Basic Auth

Escribe un usuario y una contraseña para obtener Authorization: Basic … y código listo para ejecutar en curl, fetch, Node.js, Python y PHP. La herramienta avisa de los caracteres que rompen Basic Auth.

Gratis sin registro, sin límites Local no se sube nada Fragmentos curl, fetch, Node.js, Python, PHP Actualizado 27 oct 2026
Encabezado HTTP

Código listo para usar

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo generar un encabezado Basic Auth

  1. Introduce el Usuario y la Contraseña.
  2. Deja Juego de caracteres en UTF-8, salvo que el servidor sea uno antiguo que espera ISO-8859-1 (Latin-1).
  3. Copia el resultado con Copiar encabezado para la línea completa Authorization: Basic …, o con Copiar solo el token para la parte en Base64.
  4. En Código listo para usar, pon tu endpoint en URL y copia el fragmento de tu cliente. Intercambiar envía el encabezado al decodificador para comprobarlo.

Qué contiene el encabezado

La autenticación Basic se define en el RFC 7617. El cliente une los dos valores con dos puntos, codifica los bytes en Base64 y los envía en un solo encabezado:

UsuarioContraseñaValor del encabezado
Aladdinopen sesameBasic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
deployhunter2Basic ZGVwbG95Omh1bnRlcjI=
josépässwördBasic am9zw6k6cMOkc3N3w7ZyZA== (UTF-8)
josépässwördBasic am9z6Tpw5HNzd/ZyZA== (Latin-1)

Las dos últimas filas muestran por qué importa el juego de caracteres: el mismo texto produce bytes distintos, así que un servidor que espera la otra codificación ve una contraseña incorrecta. Un servidor que quiera UTF-8 puede indicarlo en su desafío: WWW-Authenticate: Basic realm="api", charset="UTF-8".

Aquí Base64 es solo un formato de transporte. Cualquiera que copie el encabezado puede convertirlo de nuevo en la contraseña con el decodificador de Basic Auth, y por eso Basic Auth solo debe usarse sobre HTTPS. Base64 no es cifrado lo explica con más detalle.

Caracteres de los que avisa la herramienta

  • Dos puntos en el usuario. El RFC 7617 lo prohíbe. El servidor separa por los primeros dos puntos, así que parte del usuario acabaría en la contraseña.
  • Caracteres de control, como tabulaciones o saltos de línea, que no están permitidos en las credenciales Basic.
  • Caracteres que no existen en Latin-1 cuando se elige ese juego de caracteres, por ejemplo emoji o cirílico. Se sustituyen por ?, que nunca es lo que quieres.
  • Caracteres no ASCII en UTF-8. Es lo correcto según el RFC, pero los servidores heredados pueden leerlo de otra forma, así que pruébalo antes.

Los dos puntos en la contraseña están permitidos, ya que solo los primeros separan los dos valores.

Enviar Basic Auth desde código

Los fragmentos de la herramienta se generan con tus valores y con las comillas adecuadas para cada lenguaje. Las versiones básicas son así:

curl -u 'deploy:hunter2' https://api.example.com/
import requests

r = requests.get("https://api.example.com/",
                 auth=("deploy".encode("utf-8"), "hunter2".encode("utf-8")))

El ejemplo de Python pasa bytes a propósito. Cuando requests recibe valores str los codifica como Latin-1, así que una contraseña con € o ł fallaría; con bytes envía exactamente el UTF-8 que elegiste.

En JavaScript para navegador, construye tú el encabezado: fetch rechaza las URL que llevan user:pass@, y btoa() lanza un error con caracteres fuera de Latin-1, así que codifica la cadena a bytes UTF-8 antes de pasarla a Base64. El fragmento de fetch generado evita los dos problemas incrustando el token ya terminado. La guía de Base64 en JavaScript explica el paso a UTF-8, y Node.js muestra la versión con Buffer.

Cuando la petición sigue devolviendo 401

Mira primero el encabezado WWW-Authenticate de la respuesta. Si dice Bearer, la API espera un token y nunca aceptará credenciales Basic. Si dice Basic, decodifica el encabezado que enviaste de verdad (con curl -v aparece como > Authorization: Basic …) y compáralo con lo que esperabas; los espacios sobrantes o un salto de línea final copiado desde un gestor de contraseñas son culpables habituales. Los proxies usan su propio encabezado, Proxy-Authorization, con el mismo formato.

Preguntas frecuentes

¿Cómo se construye el encabezado Basic Auth?

Une el usuario y la contraseña con dos puntos, codifica esa cadena como bytes UTF-8, codifica los bytes en Base64 y pon Basic delante. Aladdin y open sesame dan Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==.

¿Es segura la autenticación Basic?

Solo sobre HTTPS. Base64 no oculta nada, así que cualquiera que pueda leer la petición decodifica la contraseña en un segundo. Con TLS, el encabezado va cifrado junto con el resto de la petición.

¿Puede la contraseña contener dos puntos?

Sí. El servidor separa por los primeros dos puntos, así que todo lo que va detrás pertenece a la contraseña. Lo que no puede contener dos puntos es el usuario.

¿Por qué mi contraseña con caracteres no ASCII falla en algunos servidores?

El RFC 7617 permite que los servidores pidan UTF-8, pero los antiguos decodifican el encabezado como ISO-8859-1. test:123£ es dGVzdDoxMjPCow== en UTF-8 y dGVzdDoxMjOj en Latin-1. Prueba el otro Juego de caracteres o limítate a ASCII.