Analizzare Proxy-Authorization in un forward proxy Go
Analizzate Proxy-Authorization separatamente in un forward proxy Go preservando l'intestazione Authorization dell'origine.
In un forward proxy Go, r.BasicAuth legge l'intestazione Authorization, che appartiene all'accesso del sito web di destinazione. Le credenziali del proxy stesso arrivano in Proxy-Authorization.
Un piccolo adattatore può riutilizzare il parser pubblico senza modificare la richiesta originale:
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()
}
Questo frammento usa net/http. Restituisce i valori analizzati e un indicatore di analisi riuscita; non autentica l'account. Passate il risultato al validatore di credenziali previsto dal proxy.
Se l'autenticazione fallisce, restituite 407 con una sfida Proxy-Authenticate adeguata e interrompete l'elaborazione di quella richiesta. Autenticate prima di aprire una connessione alla destinazione o di accettare un tunnel CONNECT.
Dopo aver accettato le credenziali, consumate l'intestazione Proxy-Authorization del proxy stesso prima dell'inoltro ordinario. Preservate il campo Authorization originale per l'origine. Un proxy padre a monte, se presente, necessita di una propria configurazione di autenticazione deliberata invece di ricevere per caso questa credenziale del client.