Skip to content

Código de status HTTP · Erros do cliente (4xx)

Erro 407 Proxy Authentication Required

O erro 407 Proxy Authentication Required significa que um proxy entre você e o site, e não o site, exige autenticação antes de repassar o pedido. Quase sempre acontece em redes corporativas, quando ferramentas de linha de comando não sabem o usuário e a senha do proxy.

Dados sobre este código de status
Classe4xx, Erros do cliente
Definido emRFC 9110 §15.5.8
Pode ir para o cache por padrãoSó com Cache-Control ou Expires explícitos
Pode repetir o pedidoSim, com o cabeçalho Proxy-Authorization para o proxy
Cabeçalhos relevantes
  • Proxy-Authenticate: obrigatório; o desafio do proxy, como Basic realm="corp-proxy"
  • Proxy-Authorization: cabeçalho do pedido que leva as credenciais para o proxy, não para o site

O que significa o 407

A RFC 9110, seção 15.5.8, descreve o 407 como a versão do 401 para proxies. O proxy deve enviar o cabeçalho Proxy-Authenticate com o desafio, e o cliente responde com Proxy-Authorization. Manter isso separado de WWW-Authenticate e Authorization permite que um mesmo pedido leve credenciais para o proxy e para o site.

O navegador trata o 407 abrindo uma janela de login do proxy, ou usando as credenciais do sistema (NTLM ou Kerberos em domínios Windows). Ferramentas como npm, pip, git, curl e Docker não compartilham essa sessão e falham com 407 até que as credenciais do proxy estejam na configuração delas ou nas variáveis HTTP_PROXY e HTTPS_PROXY. Em URLs HTTPS, o 407 chega como resposta ao CONNECT que abre o túnel.

Causas comuns

Se você está visitando o site

  • A rede da empresa ou da escola passa o tráfego por um proxy com autenticação, e a sua senha mudou ou expirou.
  • As configurações de proxy do navegador ou do sistema apontam para um proxy que exige um login que você não informou.

Se você administra o servidor

  • Ferramentas de linha de comando e runners de CI usam HTTP_PROXY sem credenciais, ou com senha que tem caracteres como @ ou # sem codificação percentual na URL.
  • O proxy só aceita NTLM ou Kerberos, que muitas ferramentas não suportam sem um proxy auxiliar local.
  • Builds Docker não herdam o proxy do host, e os passos RUN que baixam pacotes falham.

Como resolver

Se você está visitando o site

  • Informe as credenciais da rede quando o navegador pedir, ou pergunte à TI se a sua conta está bloqueada.
  • Se você não está numa rede corporativa, remova o proxy das configurações do sistema.

Se você administra o servidor

  • Defina HTTP_PROXY e HTTPS_PROXY como http://usuario:senha@proxy.exemplo.com:3128, com codificação percentual nos caracteres especiais da senha.
  • Configure as ferramentas que ignoram o ambiente: npm config set proxy, git config --global http.proxy, pip --proxy.
  • Para proxies só NTLM, rode um repassador local como o Cntlm e aponte as ferramentas para ele.
  • Passe as variáveis de proxy para o build Docker com --build-arg HTTP_PROXY=... ou na configuração do cliente Docker.

Como diagnosticar o 407

Aplicações não enviam 407; quem envia são proxies de encaminhamento (como o Squid com um helper auth_param e http_access deny !authenticated). Os comandos abaixo reproduzem o erro e passam as credenciais.

Terminal
# See the 407 and the challenge
curl -sv -x http://proxy.example.com:3128 https://example.com 2>&1 | grep -iE "407|proxy-authenticate"

# Send proxy credentials
curl -x http://proxy.example.com:3128 -U alice:s3cret https://example.com

# Most CLI tools read these
export HTTPS_PROXY="http://alice:s3cret@proxy.example.com:3128"
export HTTP_PROXY="$HTTPS_PROXY"

Costuma ser confundido com

407 vs 401
O 401 vem do site e usa WWW-Authenticate; o 407 vem de um proxy no meio do caminho e usa Proxy-Authenticate.
407 vs 511
O 511 é enviado por portais cativos de Wi-Fi de hotel ou aeroporto pedindo login na rede por uma página; o 407 é um desafio de proxy no nível do HTTP.

Perguntas frequentes

Como resolver erro 407 Proxy Authentication Required no npm ou pip?
Informe as credenciais do proxy à ferramenta: npm config set proxy http://usuario:senha@proxy:3128 (e https-proxy), ou pip install --proxy http://usuario:senha@proxy:3128. Use codificação percentual nos caracteres especiais da senha.
Por que o navegador funciona e o git ou curl dá 407?
O navegador se autentica no proxy com a sua sessão do Windows ou macOS, muitas vezes por NTLM ou Kerberos. Ferramentas de linha de comando não compartilham essa sessão e precisam das credenciais no HTTPS_PROXY ou na configuração delas.
O erro 407 vem do site que estou acessando?
Não. O pedido nem chegou ao site. Um proxy do seu lado da conexão barrou antes.

Revisado em por Arielton Oberek.