Pag-parse ng Proxy-Authorization sa isang Go forward proxy
I-parse nang hiwalay ang Proxy-Authorization sa isang Go forward proxy habang pinapanatili ang Authorization header ng pinagmulan.
Sa isang Go forward proxy, binabasa ng r.BasicAuth ang Authorization header, na para sa pag-login sa destinasyong website. Ang sariling mga kredensyal ng proxy ay dumarating sa Proxy-Authorization.
Maaaring muling gamitin ng maliit na adapter ang pampublikong parser nang hindi binabago ang orihinal na kahilingan:
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()
}
Ginagamit ng bahaging ito ang net/http. Ibinabalik nito ang mga na-parse na halaga at ang flag ng tagumpay ng pag-parse; hindi nito ginagawa ang pagpapatunay ng account. Ipasa ang resulta sa inilaan na tagapagpatunay ng kredensyal ng proxy.
Kung mabibigo ang pagpapatunay, ibalik ang 407 na may angkop na Proxy-Authenticate challenge at itigil ang pagproseso ng kahilingang iyon. Magpatunay bago magbukas ng koneksyon sa destinasyon o tumanggap ng CONNECT tunnel.
Pagkatapos tanggapin ang mga kredensyal, gamitin ang sariling Proxy-Authorization header ng proxy bago ang karaniwang pagpapasa. Panatilihin ang orihinal na field na Authorization para sa pinagmulan. Ang upstream na magulang na proxy, kung mayroon, ay nangangailangan ng sarili nitong sadyang kaayusan sa pagpapatunay sa halip na aksidenteng matanggap ang kredensyal ng kliyenteng ito.