Во Go forward proxy, 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 за изворот. Надредено родителско прокси, ако постои, бара сопствено намерно уредување на автентикацијата, наместо случајно да ги добие овие клиентски акредитиви.

Поврзани статии