Go ಫಾರ್ವರ್ಡ್ ಪ್ರಾಕ್ಸಿಯಲ್ಲಿ Proxy-Authorization ವಿಶ್ಲೇಷಣೆ
ಮೂಲ Authorization ಹೆಡರ್ ಅನ್ನು ಉಳಿಸಿಕೊಂಡು Go ಫಾರ್ವರ್ಡ್ ಪ್ರಾಕ್ಸಿಯಲ್ಲಿ Proxy-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 ಬಳಸುತ್ತದೆ. ವಿಶ್ಲೇಷಿಸಿದ ಮೌಲ್ಯಗಳನ್ನು ಮತ್ತು ವಿಶ್ಲೇಷಣೆಯ ಯಶಸ್ಸಿನ ಸೂಚಕವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; ಇದು ಖಾತೆಯನ್ನು ದೃಢೀಕರಿಸುವುದಿಲ್ಲ. ಫಲಿತಾಂಶವನ್ನು ಪ್ರಾಕ್ಸಿಯ ಉದ್ದೇಶಿತ ರುಜುವಾತು ಪರಿಶೀಲಕಕ್ಕೆ ನೀಡಿ.
ದೃಢೀಕರಣ ವಿಫಲವಾದರೆ, ಸೂಕ್ತವಾದ Proxy-Authenticate ಸವಾಲಿನೊಂದಿಗೆ 407 ಹಿಂತಿರುಗಿಸಿ ಮತ್ತು ಆ ವಿನಂತಿಯ ಸಂಸ್ಕರಣೆಯನ್ನು ನಿಲ್ಲಿಸಿ. ಗಮ್ಯಕ್ಕೆ ಸಂಪರ್ಕ ತೆರೆಯುವ ಮೊದಲು ಅಥವಾ CONNECT ಸುರಂಗವನ್ನು ಸ್ವೀಕರಿಸುವ ಮೊದಲು ದೃಢೀಕರಿಸಿ.
ರುಜುವಾತುಗಳನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ಸಾಮಾನ್ಯ ಮುಂದಕ್ಕೆ ರವಾನೆಯ ಮೊದಲು ಪ್ರಾಕ್ಸಿಯ ಸ್ವಂತ Proxy-Authorization ಹೆಡರ್ ಅನ್ನು ಬಳಸಿ. ಮೂಲಕ್ಕಾಗಿ ಮೂಲ Authorization ಕ್ಷೇತ್ರವನ್ನು ಉಳಿಸಿ. ಮೇಲಿನ ಪೋಷಕ ಪ್ರಾಕ್ಸಿ ಇದ್ದರೆ, ಈ ಕ್ಲೈಂಟ್ ರುಜುವಾತು ಆಕಸ್ಮಿಕವಾಗಿ ಸಿಗುವ ಬದಲು ಅದಕ್ಕೆ ತನ್ನದೇ ಆದ ಉದ್ದೇಶಿತ ದೃಢೀಕರಣ ವ್ಯವಸ್ಥೆ ಬೇಕು.