Nun proxy directo de Go, r.BasicAuth le a cabeceira Authorization, que pertence ao inicio de sesión do sitio web de destino. As credenciais do propio proxy chegan en Proxy-Authorization.

Un adaptador pequeno pode reutilizar o analizador público sen modificar a solicitude orixinal:

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 analizados e un indicador de análise correcta; non autentica a conta. Pase o resultado ao validador de credenciais previsto polo proxy.

Se a autenticación falla, devolva 407 cun desafío Proxy-Authenticate axeitado e deteña o procesamento desa solicitude. Autentique antes de abrir unha conexión co destino ou de aceptar un túnel CONNECT.

Tras aceptar as credenciais, consuma a cabeceira Proxy-Authorization do propio proxy antes do reenvío habitual. Conserve o campo Authorization orixinal para a orixe. Un proxy pai superior, se existe, necesita a súa propia disposición deliberada de autenticación en lugar de recibir por accidente esta credencial do cliente.

Artigos relacionados