Un 407 pide autenticación ante el proxy. Un 401 la pide para el recurso de destino. Una petición puede encontrarse con ambos, así que averigua quién la solicita antes de dar una contraseña.

Compara el estado y las cabeceras de desafío

RespuestaCabecera de desafíoCabecera de credencialesParte implicada
407 Proxy Authentication RequiredProxy-AuthenticateProxy-AuthorizationUn proxy intermediario
401 UnauthorizedWWW-AuthenticateAuthorizationEl flujo de autenticación del recurso de origen

El estado es una primera pista esencial, pero revisa todo el intercambio. Que una página muestre 407 en su texto no equivale a una respuesta HTTP 407 real. Del mismo modo, una página de acceso personalizada puede devolver 200 y aun así exigir autenticación en la capa de aplicación.

Por qué una petición HTTPS puede fallar con 407 antes de llegar al sitio

Cuando un proxy HTTP convencional transporta una petición HTTPS, el cliente suele pedirle primero que establezca un túnel CONNECT. El proxy puede exigir autenticación para esa petición CONNECT. Si no se completa, la sesión TLS con el destino aún no se ha establecido por el túnel, por lo que cambiar el token API del sitio probablemente no arregle esa fase.

Usa una petición con salida detallada para ver dónde aparece el desafío:

curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/

Sustituye el punto de escucha local por el tuyo y lee el primer desafío del registro. Un 407 durante CONNECT precede al TLS del destino; después de establecer correctamente el túnel puede aparecer un 401.

Proporciona las credenciales mediante la interfaz del proxy

Para un punto de conexión y una cuenta proporcionados por un administrador de confianza, curl puede negociar el mecanismo de autenticación del proxy y pedir la contraseña que falte:

curl --proxy http://proxy.example:8080 --proxy-anyauth --proxy-user alice https://example.com/

Sustituye el punto de conexión y el usuario de ejemplo por los datos del servicio que tienes permiso para usar. Especificar solo el usuario evita poner la contraseña directamente en el comando anterior. Los métodos admitidos pueden variar según el proxy y la compilación de curl; si falla la negociación, revisa el desafío real y las capacidades de esa compilación.

La opción de autenticación del proxy es independiente de la autenticación de usuario ante el origen en curl. No añadas una cabecera Authorization del origen para sustituir la respuesta a un desafío del proxy. Evita también reenviar manualmente cabeceras de credenciales del proxy a peticiones ajenas o guardarlas en cabeceras reutilizadas por toda la aplicación.

Si el proxy sigue devolviendo 407

  • Confirma que usas el host y el puerto del proxy previstos.
  • Comprueba los mecanismos anunciados por el proxy en lugar de dar por hecho que usa Basic.
  • Confirma el estado de la cuenta y si el servicio exige un formato de usuario concreto.
  • Revisa cómo se transmiten los caracteres especiales si las credenciales están integradas en una URL.
  • Determina si la autenticación empresarial integrada en el navegador necesita soporte del entorno de ejecución o de la plataforma.
  • Si las pruebas del cliente no bastan, pide al administrador un identificador de petición o una entrada del registro del servidor con los datos sensibles eliminados.

Un 403 o un CONNECT denegado puede deberse a una política de acceso incluso tras iniciar sesión correctamente. Probar más contraseñas no dará acceso a un destino prohibido.

El HTTPS del destino no protege todos los intercambios de credenciales del proxy

La autenticación del proxy puede ocurrir antes de establecer TLS con el destino. Si la conexión al propio proxy va sin cifrar y el método expone credenciales reutilizables en ese enlace, el destino HTTPS no protege retroactivamente ese intercambio. Elige un transporte y un mecanismo de autenticación adecuados al servicio, y no envíes cuentas privadas a un proxy público desconocido.

Revisa los registros detallados antes de compartirlos. Aunque la herramienta oculte los campos habituales de credenciales, pueden contener usuarios, nombres de puntos de conexión internos, cookies u otros datos identificativos.

Artículos relacionados