Розбір Proxy-Authorization у forward-проксі на Go
Розбирайте Proxy-Authorization окремо у forward-проксі на Go, зберігаючи заголовок Authorization джерела.
У forward-проксі на 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 для джерела. Вищому батьківському проксі, якщо він є, потрібна власна продумана схема автентифікації, а не випадкове отримання цих клієнтських облікових даних.