Në një forward proxy Go, r.BasicAuth lexon header-in Authorization, i cili i përket hyrjes në faqen e destinacionit. Kredencialet e vetë proxy-t vijnë në Proxy-Authorization.

Një përshtatës i vogël mund të ripërdorë parser-in publik pa ndryshuar kërkesën origjinale:

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

Ky fragment përdor net/http. Kthen vlerat e analizuara dhe një flamur suksesi të analizimit; nuk vërteton llogarinë. Kalojani rezultatin validuesit të synuar të kredencialeve të proxy-t.

Nëse vërtetimi dështon, ktheni 407 me një sfidë të përshtatshme Proxy-Authenticate dhe ndaloni përpunimin e asaj kërkese. Vërtetoni përpara se të hapni një lidhje drejt destinacionit ose të pranoni një tunel CONNECT.

Pasi të pranoni kredencialet, konsumoni header-in Proxy-Authorization të vetë proxy-t përpara përcjelljes së zakonshme. Ruani fushën origjinale Authorization për origjinën. Një proxy prind i sipërm, nëse ekziston, kërkon rregullimin e vet të qëllimshëm të vërtetimit, në vend që të marrë rastësisht këtë kredencial klienti.

Artikuj të ngjashëm