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 ഉപയോഗിക്കുന്നു. വിശകലനം ചെയ്ത മൂല്യങ്ങളും വിശകലന വിജയ സൂചകവും ഇത് തിരികെ നൽകുന്നു; ഇത് അക്കൗണ്ട് പ്രാമാണീകരിക്കുന്നില്ല. ഫലം പ്രോക്സി ഉദ്ദേശിക്കുന്ന ക്രെഡൻഷ്യൽ പരിശോധനയ്ക്ക് നൽകുക.

പ്രാമാണീകരണം പരാജയപ്പെട്ടാൽ, ഉചിതമായ Proxy-Authenticate ചലഞ്ചോടെ 407 തിരികെ നൽകി ആ അഭ്യർത്ഥനയുടെ പ്രോസസ്സിംഗ് നിർത്തുക. ലക്ഷ്യത്തിലേക്കുള്ള കണക്ഷൻ തുറക്കുന്നതിനോ CONNECT ടണൽ സ്വീകരിക്കുന്നതിനോ മുമ്പ് പ്രാമാണീകരിക്കുക.

ക്രെഡൻഷ്യലുകൾ സ്വീകരിച്ച ശേഷം, സാധാരണ കൈമാറ്റത്തിന് മുമ്പ് പ്രോക്സിയുടെ സ്വന്തം Proxy-Authorization ഹെഡർ ഉപയോഗിക്കുക. ഉറവിടത്തിനായി യഥാർത്ഥ Authorization ഫീൽഡ് സൂക്ഷിക്കുക. മുകളിലെ പേരന്റ് പ്രോക്സി ഉണ്ടെങ്കിൽ, ഈ ക്ലയന്റ് ക്രെഡൻഷ്യൽ അബദ്ധത്തിൽ സ്വീകരിക്കുന്നതിന് പകരം അതിന് സ്വന്തം ബോധപൂർവമായ പ്രാമാണീകരണ ക്രമീകരണം വേണം.

അനുബന്ധ ലേഖനങ്ങൾ