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.

Aiheeseen liittyvät artikkelit