Разбор 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 для крыніцы. Калі ёсць вышэйшы бацькоўскі праксі, яму патрэбна ўласная наўмысная схема аўтэнтыфікацыі, а не выпадковае атрыманне гэтых уліковых даных кліента.