Analiza Proxy-Authorization w forward proxy Go
Analizuj Proxy-Authorization osobno w forward proxy Go, zachowując nagłówek Authorization źródła.
W forward proxy Go r.BasicAuth odczytuje nagłówek Authorization, który należy do logowania w docelowej witrynie. Własne dane uwierzytelniające proxy przychodzą w Proxy-Authorization.
Mały adapter może ponownie użyć publicznego parsera bez zmiany pierwotnego żądania:
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()
}
Ten fragment używa net/http. Zwraca przeanalizowane wartości i flagę powodzenia analizy; nie uwierzytelnia konta. Przekaż wynik zamierzonemu walidatorowi danych uwierzytelniających proxy.
Jeśli uwierzytelnienie się nie powiedzie, zwróć 407 z odpowiednim wyzwaniem Proxy-Authenticate i zatrzymaj przetwarzanie tego żądania. Uwierzytelnij przed otwarciem połączenia z celem lub przyjęciem tunelu CONNECT.
Po przyjęciu danych uwierzytelniających zużyj własny nagłówek Proxy-Authorization proxy przed zwykłym przekazywaniem. Zachowaj pierwotne pole Authorization dla źródła. Nadrzędny proxy, jeśli istnieje, potrzebuje własnego świadomego układu uwierzytelniania, zamiast przypadkowo otrzymać te dane klienta.