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.
| Classe | 4xx, Erros do cliente |
|---|---|
| Definido em | RFC 9110 §15.5.8 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Sim, com o cabeçalho Proxy-Authorization para o proxy |
| Cabeçalhos relevantes |
|
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.
# 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.