Analyser Proxy-Authorization dans un proxy direct Go
Analysez Proxy-Authorization séparément dans un proxy direct Go tout en conservant l'en-tête Authorization de l'origine.
Dans un proxy direct Go, r.BasicAuth lit l'en-tête Authorization, qui appartient à la connexion du site web de destination. Les identifiants du proxy lui-même arrivent dans Proxy-Authorization.
Un petit adaptateur peut réutiliser l'analyseur public sans modifier la requête d'origine :
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()
}
Cet extrait utilise net/http. Il renvoie les valeurs analysées et un indicateur de réussite de l'analyse ; il n'authentifie pas le compte. Transmettez le résultat au validateur d'identifiants prévu par le proxy.
Si l'authentification échoue, renvoyez 407 avec un défi Proxy-Authenticate approprié et arrêtez le traitement de cette requête. Authentifiez-vous avant d'ouvrir une connexion vers la destination ou d'accepter un tunnel CONNECT.
Après avoir accepté les identifiants, consommez l'en-tête Proxy-Authorization du proxy lui-même avant le transfert habituel. Conservez le champ Authorization d'origine pour l'origine. Un proxy parent en amont, s'il existe, a besoin de sa propre configuration d'authentification délibérée plutôt que de recevoir par accident cet identifiant client.