Mengurai Proxy-Authorization di forward proxy Go
Uraikan Proxy-Authorization secara terpisah di forward proxy Go sambil mempertahankan header Authorization dari origin.
Di forward proxy Go, r.BasicAuth membaca header Authorization, yang merupakan milik login situs web tujuan. Kredensial milik proxy sendiri datang dalam Proxy-Authorization.
Adaptor kecil dapat menggunakan kembali parser publik tanpa mengubah permintaan asli:
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()
}
Fragmen ini menggunakan net/http. Fragmen mengembalikan nilai hasil penguraian dan penanda keberhasilan penguraian; fragmen tidak mengautentikasi akun. Teruskan hasilnya ke validator kredensial yang dimaksudkan oleh proxy.
Jika autentikasi gagal, kembalikan 407 dengan tantangan Proxy-Authenticate yang sesuai dan hentikan pemrosesan permintaan itu. Autentikasi sebelum membuka koneksi ke tujuan atau menerima terowongan CONNECT.
Setelah menerima kredensial, pakai header Proxy-Authorization milik proxy sendiri sebelum penerusan biasa. Pertahankan bidang Authorization asli untuk origin. Proxy induk di hulu, jika ada, memerlukan pengaturan autentikasi tersendiri yang disengaja, bukan menerima kredensial klien ini secara tidak sengaja.