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