Analisar Proxy-Authorization num forward proxy Go
Analise o Proxy-Authorization separadamente num forward proxy Go, preservando o cabeçalho Authorization da origem.
Num forward proxy Go, r.BasicAuth lê o cabeçalho Authorization, que pertence ao login do site de destino. As credenciais do próprio proxy chegam em Proxy-Authorization.
Um pequeno adaptador pode reutilizar o analisador público sem alterar o pedido original:
func proxyBasicAuth(r *http.Request) (string, string, bool) {
headers := make(http.Header)
headers.Set("Authorization", r.Header.Get("Proxy-Authorization"))
return (&http.Request{Header: headers}).BasicAuth()
}
Este fragmento usa net/http. Devolve os valores analisados e um indicador de sucesso da análise; não autentica a conta. Passe o resultado ao validador de credenciais previsto pelo proxy.
Se a autenticação falhar, devolva 407 com um desafio Proxy-Authenticate adequado e interrompa o processamento desse pedido. Autentique antes de abrir uma ligação ao destino ou de aceitar um túnel CONNECT.
Depois de aceitar as credenciais, consuma o cabeçalho Proxy-Authorization do próprio proxy antes do encaminhamento normal. Preserve o campo Authorization original para a origem. Um proxy pai a montante, se existir, precisa da sua própria disposição deliberada de autenticação em vez de receber acidentalmente esta credencial do cliente.