Go forward proxy'de r.BasicAuth, hedef web sitesinin oturum açmasına ait olan Authorization başlığını okur. Proxy'nin kendi kimlik bilgileri ise Proxy-Authorization içinde gelir.

Küçük bir bağdaştırıcı, özgün isteği değiştirmeden ortak ayrıştırıcıyı yeniden kullanabilir:

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

Bu parça net/http kullanır. Ayrıştırılan değerleri ve ayrıştırma başarı bayrağını döndürür; hesabın kimliğini doğrulamaz. Sonucu proxy'nin amaçladığı kimlik bilgisi doğrulayıcısına iletin.

Kimlik doğrulama başarısız olursa, uygun bir Proxy-Authenticate meydan okumasıyla 407 döndürün ve o isteğin işlenmesini durdurun. Hedefe bağlantı açmadan veya bir CONNECT tünelini kabul etmeden önce kimlik doğrulaması yapın.

Kimlik bilgilerini kabul ettikten sonra, olağan yönlendirmeden önce proxy'nin kendi Proxy-Authorization başlığını tüketin. Özgün Authorization alanını kaynak için koruyun. Yukarı akışta bir üst proxy varsa, bu istemci kimlik bilgilerini yanlışlıkla almak yerine kendi bilinçli kimlik doğrulama düzenine ihtiyaç duyar.

İlgili makaleler