En un proxy directe de Go, r.BasicAuth llegeix la capçalera Authorization, que pertany a l'inici de sessió del lloc web de destinació. Les credencials del propi proxy arriben a Proxy-Authorization.

Un adaptador petit pot reutilitzar l'analitzador públic sense modificar la petició 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()
}

Aquest fragment utilitza net/http. Retorna els valors analitzats i un indicador d'èxit de l'anàlisi; no autentica el compte. Passeu el resultat al validador de credencials previst pel proxy.

Si l'autenticació falla, retorneu 407 amb un repte Proxy-Authenticate adequat i atureu el processament d'aquesta petició. Autentiqueu abans d'obrir una connexió a la destinació o d'acceptar un túnel CONNECT.

Després d'acceptar les credencials, consumeixi la capçalera Proxy-Authorization del propi proxy abans del reenviament habitual. Preserveu el camp Authorization original per a l'origen. Un proxy pare superior, si n'hi ha, necessita la seva pròpia disposició deliberada d'autenticació en lloc de rebre accidentalment aquesta credencial del client.

Articles relacionats