La autenticación de proxy es la verificación que realiza un servidor proxy para confirmar que un cliente tiene permiso para utilizarlo antes de que reenvíe cualquier tráfico. El cliente demuestra quién es con credenciales, como un nombre de usuario y contraseña, o conectándose desde una dirección IP aprobada. Si la verificación falla, el proxy rechaza la solicitud. A través de HTTP, un proxy que necesita credenciales responde con un código de estado 407.

Nombre de Usuario/Contraseña vs. Lista Blanca de IP

  • Autenticación de nombre de usuario/contraseña envía credenciales en el encabezado Proxy-Authorization, por lo que no depende de la dirección IP del cliente.
  • Lista blanca de IP autoriza IPs o subredes de origen específicas sin credenciales, por lo que las solicitudes de cualquier otra IP son rechazadas.

Cómo Funciona el Desafío 407

  • Desafío: Un proxy que necesita credenciales responde a una solicitud no autenticada con 407 Proxy Authentication Required. La respuesta debe incluir un encabezado Proxy-Authenticate que nombre el esquema a utilizar, como Basic.
  • Reintentar: El cliente repite la solicitud con un encabezado Proxy-Authorization que lleva sus credenciales, por ejemplo Proxy-Authorization: Basic <credentials>.
  • 407 vs. 401: Un 407 funciona como un 401 No Autorizado, pero significa que el proxy necesita credenciales, no el sitio web.
  • Alcance: Proxy-Authorization se aplica solo al proxy que lo solicitó. En una cadena de proxies, el primer proxy que espera credenciales consume el encabezado.

Manteniendo Seguras las Credenciales del Proxy

  • Básico no es cifrado: El esquema Básico solo codifica en base64 username:password. Base64 es reversible, por lo que esto es equivalente a enviar las credenciales en texto claro.
  • Preferir conexiones cifradas: MDN recomienda HTTPS siempre que se utilice autenticación, y especialmente con Básico. Algunos clientes, como curl, pueden conectarse al proxy mismo a través de TLS con una URL de proxy https://.
  • Codificar caracteres especiales: curl decodifica la URL del nombre de usuario y la contraseña en una cadena de proxy, por lo que una contraseña que contenga @ debe escribirse como %40 y un dos puntos como %3a.

Términos Relacionados