Разбор на 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 за източника. Ако има по-горно родителско прокси, то се нуждае от собствена умишлена схема за удостоверяване, вместо случайно да получи тези клиентски идентификационни данни.