Go edasisaatvas puhverserveris loeb r.BasicAuth päist Authorization, mis kuulub sihtveebisaidi sisselogimise juurde. Puhverserveri enda volitused saabuvad päises Proxy-Authorization.

Väike adapter saab avalikku parserit uuesti kasutada ilma algset päringut muutmata:

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()
}

See katkend kasutab teeki net/http. See tagastab parsitud väärtused ja parsimise õnnestumise lipu; see ei autendi kontot. Edasta tulemus puhverserveri ettenähtud volituste valideerijale.

Kui autentimine ebaõnnestub, tagasta 407 sobiva Proxy-Authenticate väljakutsega ja lõpeta selle päringu töötlemine. Autendi enne sihtkohaga ühenduse avamist või CONNECT-tunneli vastuvõtmist.

Pärast volituste vastuvõtmist tarbi puhverserveri enda Proxy-Authorization-päist enne tavalist edasisaatmist. Säilita päritoluserveri jaoks algne Authorization-väli. Ülemine vanempuhverserver vajab oma teadlikku autentimiskorraldust, mitte ei tohiks seda kliendi volitust kogemata saada.

Seotud artiklid