Si estás trabajando con APIs, probablemente sepas qué es una cabecera de autorización HTTP. Es una forma de enviar credenciales a un servidor para autenticar una solicitud. Se utiliza a menudo para acceder a recursos protegidos o realizar acciones que requieren permiso.
Pero, ¿sabes cómo usarla de forma eficaz y segura? En esta entrada de blog, te mostraremos cómo usar la cabecera de autorización HTTP como un profesional, utilizando una herramienta llamada Apidog.
Al final de esta entrada de blog, tendrás una mejor comprensión de la cabecera de autorización HTTP y de cómo usarla con confianza. ¡Empecemos!
¿Qué es una cabecera de autorización HTTP?
La cabecera de autorización HTTP es una parte del protocolo HTTP que te permite enviar credenciales a un servidor para autenticar una solicitud. Normalmente tiene el siguiente formato:
Authorization: <type> <credentials>
El <type>
indica el esquema de autorización, como Basic, Bearer, Digest, etc. Las <credentials>
son los datos reales que el servidor necesita para verificar tu identidad, como un nombre de usuario y una contraseña, un token, un hash, etc.
La cabecera de autorización HTTP se utiliza a menudo para acceder a recursos protegidos o realizar acciones que requieren permiso. Por ejemplo, es posible que tengas que enviar una cabecera de autorización HTTP para:
- Acceder al perfil o a los datos de un usuario en una plataforma de redes sociales
- Subir o descargar archivos de un servicio de almacenamiento en la nube
- Realizar un pago o una transacción en un sitio de comercio electrónico
- Gestionar o supervisar un servidor o un dispositivo en una red
- Y muchos más
La cabecera de autorización HTTP es una forma sencilla y flexible de autenticar solicitudes, pero también conlleva algunos retos y riesgos. Debes elegir el esquema de autorización adecuado para tu API, generar y enviar la cabecera de autorización HTTP correctamente, gestionar los errores y las respuestas del servidor, proteger tu cabecera de autorización HTTP de los ataques y documentar tu cabecera de autorización HTTP para otros desarrolladores.

Cómo elegir el esquema de autorización adecuado para tu API
Hay muchos esquemas de autorización que puedes usar con una cabecera de autorización HTTP, como Basic, Bearer, Digest, OAuth, etc. Cada esquema tiene sus propias ventajas y desventajas, y debes elegir el que mejor se adapte a las necesidades y los requisitos de seguridad de tu API. Estos son algunos de los factores que debes tener en cuenta al elegir un esquema de autorización para tu API:
- Complejidad: Algunos esquemas de autorización son más sencillos y fáciles de implementar que otros. Por ejemplo, Basic y Bearer son muy sencillos y solo requieren una única cabecera, mientras que OAuth y Digest son más complejos y requieren varios pasos y cabeceras. Debes elegir un esquema de autorización que sea fácil de entender y usar tanto para ti como para los consumidores de tu API.
- Seguridad: Algunos esquemas de autorización son más seguros y robustos que otros. Por ejemplo, Basic y Bearer son vulnerables a las escuchas y a los ataques de repetición, mientras que OAuth y Digest son más resistentes a estas amenazas. Debes elegir un esquema de autorización que proporcione una protección adecuada para los datos y la funcionalidad de tu API.
- Rendimiento: Algunos esquemas de autorización son más eficientes y rápidos que otros. Por ejemplo, Basic y Bearer no tienen estado y no requieren ninguna solicitud adicional ni consultas a la base de datos, mientras que OAuth y Digest tienen estado y pueden requerir una sobrecarga adicional. Debes elegir un esquema de autorización que minimice la latencia y el consumo de ancho de banda de tu API.
- Estandarización: Algunos esquemas de autorización están más ampliamente adoptados y admitidos que otros. Por ejemplo, Basic y Bearer son muy comunes y compatibles con la mayoría de los clientes y servidores HTTP, mientras que OAuth y Digest son más específicos y pueden requerir bibliotecas o herramientas especiales. Debes elegir un esquema de autorización que sea fácil de integrar y mantener para tu API.
Para ayudarte a elegir el esquema de autorización adecuado para tu API, aquí tienes una tabla que resume las principales características y diferencias de algunos esquemas de autorización populares:
Esquema | Complejidad | Seguridad | Rendimiento | Estandarización |
---|---|---|---|---|
Basic | Baja | Baja | Alta | Alta |
Bearer | Baja | Media | Alta | Alta |
Digest | Media | Media | Media | Media |
OAuth | Alta | Alta | Baja | Media |
Por supuesto, esta tabla no es exhaustiva y puede haber otros esquemas de autorización que no se enumeran aquí. Siempre debes investigar y probar antes de elegir un esquema de autorización para tu API.

¿Cómo usar la cabecera de autorización HTTP con la autenticación básica?
La autenticación básica es uno de los tipos más sencillos y utilizados de cabecera de autorización HTTP. Funciona enviando el nombre de usuario y la contraseña del solicitante en texto plano, codificados con base64, al servidor. A continuación, el servidor decodifica las credenciales y comprueba si coinciden con las almacenadas en su base de datos. Si lo hacen, el servidor concede acceso al recurso solicitado. Si no lo hacen, el servidor devuelve un mensaje de error.
Para usar la cabecera de autorización HTTP con la autenticación básica, debes seguir estos pasos:
- Codifica tu nombre de usuario y contraseña con base64. Puedes usar cualquier herramienta o biblioteca en línea para hacerlo. Por ejemplo, si tu nombre de usuario es "alice" y tu contraseña es "secret", la cadena codificada en base64 sería "YWxpY2U6c2VjcmV0".
- Añade el prefijo "Basic " a la cadena codificada. Esto indica que estás usando la autenticación básica. Por ejemplo, la cadena final sería "Basic YWxpY2U6c2VjcmV0".
- Establece el valor de la cabecera de autorización HTTP en la cadena final. Por ejemplo, la cabecera de autorización HTTP tendría este aspecto:
Authorization: Basic YWxpY2U6c2VjcmV0
4. Envía la solicitud al servidor. El servidor decodificará las credenciales y autenticará la solicitud. Por ejemplo, si estás usando curl, el comando tendría este aspecto:
curl -H "Authorization: Basic YWxpY2U6c2VjcmV0" https://example.com/api
5. Recibe la respuesta del servidor. Si las credenciales son válidas, el servidor devolverá el recurso solicitado. Si las credenciales no son válidas, el servidor devolverá un mensaje de error con el código de estado 401 (No autorizado).
Usar la cabecera de autorización HTTP con la autenticación básica es sencillo y fácil, pero también tiene algunos inconvenientes. El principal inconveniente es que las credenciales se envían en texto plano, lo que significa que pueden ser interceptadas y comprometidas por cualquiera que pueda ver el tráfico de la red.
Por lo tanto, la autenticación básica solo debe usarse a través de HTTPS, que cifra los datos y evita las escuchas. Otro inconveniente es que la autenticación básica no admite ninguna forma de gestión de sesiones, lo que significa que las credenciales tienen que enviarse con cada solicitud, lo que puede ser ineficiente e inseguro.
Por lo tanto, la autenticación básica solo debe usarse para APIs sencillas y sin estado, donde los requisitos de seguridad son bajos y el impacto en el rendimiento es mínimo.

Cómo usar la cabecera de autorización HTTP con el token Bearer
El token Bearer es otro tipo popular de cabecera de autorización HTTP. Funciona enviando un token, que es una cadena de caracteres que representa la identidad y los permisos del solicitante, al servidor. A continuación, el servidor valida el token y comprueba si concede acceso al recurso solicitado. Si lo hace, el servidor devuelve el recurso. Si no lo hace, el servidor devuelve un mensaje de error.
Para usar la cabecera de autorización HTTP con el token Bearer, debes seguir estos pasos:
- Obtén un token del servidor o de un servicio de terceros. El token puede generarse y validarse usando varios métodos y estándares, como JSON Web Token (JWT), que es una forma autocontenida y segura de codificar y verificar las reclamaciones. Para obtener un token, normalmente tienes que proporcionar algunas credenciales, como el nombre de usuario y la contraseña, o una clave de API, al servidor o al servicio. A continuación, el servidor o el servicio devolverá un token que contiene la información y los permisos del solicitante. Por ejemplo, si estás usando JWT, el token tendría un aspecto similar a este:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsIm5hbWUiOiJBbGljZSBCb2IiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE2MjEwMjQwMDB9.6y0jZt7xg8GxhXUq3TJrcQ4aR7fZ0v0t5DLGJ4Z5C8k
El token consta de tres partes, separadas por puntos: la cabecera, la carga útil y la firma. La cabecera contiene el algoritmo y el tipo de token. La carga útil contiene las reclamaciones, que son la información y los permisos del solicitante. La firma es el resultado de aplicar el algoritmo a la cabecera y a la carga útil, usando una clave secreta. La firma garantiza la integridad y la autenticidad del token.
2. Añade el prefijo "Bearer " al token. Esto indica que estás usando la autenticación de token Bearer.
3. Establece el valor de la cabecera de autorización HTTP en la cadena final.
4. Envía la solicitud al servidor. El servidor decodificará y verificará el token y autenticará la solicitud.
5. Recibe la respuesta del servidor. Si el token es válido, el servidor devolverá el recurso solicitado. Si el token no es válido, el servidor devolverá un mensaje de error con el código de estado 401 (No autorizado) o 403 (Prohibido).

Cómo usar la cabecera de autorización HTTP con la autenticación Digest

La autenticación Digest es un tipo de cabecera de autorización HTTP más avanzado y seguro que la autenticación básica. Funciona enviando un hash, que es el resultado de aplicar una función matemática a una cadena de caracteres, de las credenciales y otra información, como un nonce y una marca de tiempo, al servidor. A continuación, el servidor calcula el mismo hash usando la misma información y lo compara con el enviado por el solicitante. Si coinciden, el servidor concede acceso al recurso solicitado. Si no coinciden, el servidor devuelve un mensaje de error.
Para usar la cabecera de autorización HTTP con la autenticación Digest, debes seguir estos pasos:
- Recibe un desafío del servidor. El desafío es un mensaje que contiene información que el servidor usa para verificar las credenciales, como un nonce, un realm y un qop. El desafío lo envía el servidor cuando el solicitante intenta acceder a un recurso protegido sin autenticación, o con credenciales no válidas. El desafío se envía con el código de estado 401 (No autorizado) y una cabecera llamada WWW-Authenticate.
- Calcula el hash de las credenciales y el desafío. El hash se calcula usando una función matemática llamada MD5, que produce un número hexadecimal de 32 dígitos a partir de cualquier entrada.
El hash se compone de tres partes: el HA1, el HA2 y la respuesta. El HA1 es el hash del nombre de usuario, el realm y la contraseña. El HA2 es el hash del método HTTP y el URI de la solicitud. La respuesta es el hash del HA1, el nonce, el recuento de nonce, el nonce del cliente, el qop y el HA2. El recuento de nonce es un número que indica cuántas veces se ha usado el nonce. El nonce del cliente es una cadena aleatoria que genera el solicitante.
Cómo enviar la cabecera de autorización HTTP con Apidog
Una vez que hayas elegido un esquema de autorización para tu API, debes generar y enviar la cabecera de autorización HTTP con tus solicitudes. Esto se puede hacer fácilmente con Apidog, una herramienta de desarrollo de API todo en uno que te ayuda a probar, depurar y documentar tus APIs. Apidog te permite:
- Crear y guardar varias solicitudes de API con diferentes parámetros, cabeceras y cuerpo
- Enviar y recibir solicitudes y respuestas de API en tiempo real
- Ver y analizar el estado, las cabeceras y el cuerpo de la respuesta de la API
- Validar y formatear el cuerpo de la respuesta de la API con JSON, XML, HTML, etc.
- Generar y compartir la documentación de la API con otros desarrolladores.
Para usar Apidog para enviar la cabecera de autorización HTTP, debes seguir estos pasos:
Paso 1: Crea una nueva solicitud de API haciendo clic en el botón "Nueva solicitud".

Paso 2: Especifica el método HTTP e introduce la URL del punto final de la API al que quieres acceder.

Paso 3: Haz clic en la pestaña "Auth", elige el tipo de autenticación e introduce los detalles de la autenticación.

Paso 4: Haz clic en el botón Send
para enviar la solicitud del punto final con los detalles de autenticación incluidos automáticamente en la cabecera. Una vez enviada, puedes revisar la respuesta, incluyendo el código de estado, las cabeceras y el cuerpo. Si el token es válido, deberías ver un código de estado de 200 (OK) y el recurso solicitado en el cuerpo. Si el token no es válido, espera un código de estado de 401 (No autorizado) o 403 (Prohibido) junto con un mensaje de error en el cuerpo.

Como puedes ver, apidog hace que sea muy fácil y cómodo generar y enviar la cabecera de autorización HTTP con tus solicitudes de API. También puedes usar Apidog para probar y depurar otros aspectos de tu API, como los parámetros, las cabeceras y el cuerpo de tus solicitudes y respuestas, y obtener la validación automatizada de la API.
Cómo gestionar los errores y retos comunes con la cabecera de autorización HTTP
Cuando usas la cabecera de autorización HTTP para autenticar tus solicitudes de API, puedes encontrar algunos errores y retos que debes gestionar correctamente. Algunos de los errores y retos comunes son:
Credenciales no válidas o faltantes:
Uno de los errores más comunes con la cabecera de autorización HTTP es cuando las credenciales no son válidas o faltan. Esto puede ocurrir cuando el usuario introduce un nombre de usuario o una contraseña incorrectos, el token caduca o se revoca, el hash es incorrecto o se ha manipulado, o la cabecera está mal formada o se omite.
Para gestionar este error, siempre debes comprobar el código de estado de la respuesta y la cabecera WWW-Authenticate del servidor.
Si el código de estado es 401 (No autorizado), significa que el servidor requiere autenticación y proporciona un desafío que indica los esquemas y parámetros admitidos. A continuación, debes pedir al usuario las credenciales correctas, u obtener un nuevo token, y volver a intentar la solicitud con la cabecera de autorización adecuada.
Si el código de estado es 403 (Prohibido), significa que el servidor rechaza las credenciales o el token, y no permite el acceso al recurso. A continuación, debes informar al usuario del motivo y de las posibles acciones, como ponerse en contacto con el administrador o solicitar un nuevo permiso.
Ataques de repetición:
Otro reto común con la cabecera de autorización HTTP es cuando las credenciales o el token son reutilizados por un atacante que intercepta la solicitud o la respuesta. Esto puede comprometer la seguridad y la integridad de la API y de los datos. Para evitar este reto, siempre debes usar HTTPS, que cifra los datos y evita las escuchas.
También debes usar esquemas que incluyan nonce, marca de tiempo y firma, como la autenticación Digest y JWT, que hacen que las credenciales o el token sean únicos y verificables. También debes usar esquemas que tengan tiempo de caducidad y mecanismos de revocación, como OAuth 2.0, que limitan la validez y la usabilidad de las credenciales o del token.
Rendimiento y escalabilidad:
Otro reto común con la cabecera de autorización HTTP es cuando el proceso de autenticación afecta al rendimiento y a la escalabilidad de la API y del servidor. Esto puede ocurrir cuando el esquema de autenticación es complejo y computacionalmente intensivo, como el hash, el cifrado y la firma, o cuando la autenticación requiere varias solicitudes y respuestas, como la obtención y la actualización de tokens.
Para superar este reto, siempre debes elegir el esquema de autenticación adecuado para tu API, en función de los requisitos de seguridad, la funcionalidad y la experiencia del usuario. También debes optimizar el proceso de autenticación, como el almacenamiento en caché de las credenciales o del token, el uso de algoritmos y bibliotecas eficientes y la reducción de la sobrecarga de la red.
Documentación y comunicación:
Otro reto común con la cabecera de autorización HTTP es cuando el esquema de autenticación no está bien documentado y comunicado a los usuarios y desarrolladores de la API. Esto puede llevar a la confusión, a los errores y a la frustración.
Para evitar este reto, siempre debes documentar y comunicar el esquema de autenticación de tu API, como el tipo, el formato, los parámetros, los errores y los ejemplos de la cabecera de autorización.

Conclusión
La cabecera de autorización HTTP es una forma potente y flexible de proteger tus APIs y proporcionar autenticación y autorización para tus clientes. Siguiendo las mejores prácticas y los consejos que se comentan en esta entrada, puedes asegurarte de que tus APIs son robustas, fiables y cumplen con los estándares y las especificaciones.
También puedes usar varias herramientas y marcos de trabajo, como Apidog, para diseñar, depurar, desarrollar, simular y probar tus APIs con la cabecera de autorización HTTP. Apidog te ayuda a conectar todo el ciclo de vida de la API e implementar las mejores prácticas para el desarrollo de la API con un diseño primero.