Go წინა პროქსიში r.BasicAuth კითხულობს Authorization სათაურს, რომელიც დანიშნულების ვებსაიტის შესვლას ეკუთვნის. თავად პროქსის სერთიფიკატები Proxy-Authorization-ში მოდის.

პატარა ადაპტერს შეუძლია საჯარო პარსერის ხელახლა გამოყენება თავდაპირველი მოთხოვნის შეცვლის გარეშე:

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

ეს ფრაგმენტი იყენებს net/http-ს. ის აბრუნებს გაანალიზებულ მნიშვნელობებს და ანალიზის წარმატების დროშას; ის არ ამოწმებს ანგარიშს. შედეგი გადაეცით პროქსის განზრახ სერთიფიკატების ვალიდატორს.

თუ ავთენტიფიკაცია ვერ მოხერხდა, დააბრუნეთ 407 შესაბამისი Proxy-Authenticate გამოწვევით და შეწყვიტეთ ამ მოთხოვნის დამუშავება. ავთენტიფიკაცია გაიარეთ დანიშნულებისკენ კავშირის გახსნამდე ან CONNECT გვირაბის მიღებამდე.

სერთიფიკატების მიღების შემდეგ, ჩვეულებრივ გადაგზავნამდე მოიხმარეთ პროქსის საკუთარი Proxy-Authorization სათაური. შეინარჩუნეთ ორიგინალური Authorization ველი საწყისისთვის. ზედა მშობელი პროქსი, თუ არსებობს, საჭიროებს საკუთარ განზრახ ავთენტიფიკაციის მოწყობას და არა ამ კლიენტის სერთიფიკატის შემთხვევით მიღებას.

დაკავშირებული სტატიები