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

Подобни статии