Proxy-Authorizationin jäsentäminen Go-edelleenlähetysvälityspalvelimessa
Jäsennä Proxy-Authorization erikseen Go-edelleenlähetysvälityspalvelimessa säilyttäen alkuperän Authorization-otsake.
Go-edelleenlähetysvälityspalvelimessa r.BasicAuth lukee Authorization-otsakkeen, joka kuuluu kohdesivuston kirjautumiseen. Välityspalvelimen omat tunnistetiedot saapuvat Proxy-Authorization-otsakkeessa.
Pieni sovitin voi käyttää julkista jäsentäjää uudelleen muuttamatta alkuperäistä pyyntöä:
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()
}
Tämä katkelma käyttää net/http-pakettia. Se palauttaa jäsennetyt arvot ja jäsennyksen onnistumislippuarvon; se ei todista tiliä. Anna tulos välityspalvelimen aiottuun tunnistetietojen validoijaan.
Jos todentaminen epäonnistuu, palauta 407 ja sopiva Proxy-Authenticate-haaste ja lopeta kyseisen pyynnön käsittely. Todennä ennen kuin avaat yhteyden kohteeseen tai hyväksyt CONNECT-tunnelin.
Kun tunnistetiedot on hyväksytty, käytä välityspalvelimen oma Proxy-Authorization-otsake loppuun ennen tavallista edelleenlähetystä. Säilytä alkuperäinen Authorization-kenttä alkuperälle. Ylävirran päävälityspalvelin tarvitsee oman tarkoituksellisen todentamisjärjestelynsä sen sijaan, että saisi tämän asiakastunnisteen vahingossa.