Ανάλυση του Proxy-Authorization σε forward proxy της Go
Αναλύστε το Proxy-Authorization ξεχωριστά σε forward proxy της Go, διατηρώντας την κεφαλίδα Authorization του προορισμού.
Σε forward proxy της Go, το r.BasicAuth διαβάζει την κεφαλίδα Authorization, η οποία ανήκει στη σύνδεση του ιστότοπου προορισμού. Τα διαπιστευτήρια του ίδιου του proxy φτάνουν στο 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.
Αν η επαλήθευση αποτύχει, επιστρέψτε 407 με κατάλληλη πρόκληση Proxy-Authenticate και σταματήστε την επεξεργασία αυτού του αιτήματος. Επαληθεύστε πριν ανοίξετε σύνδεση προς τον προορισμό ή δεχτείτε σήραγγα CONNECT.
Αφού δεχτείτε τα διαπιστευτήρια, καταναλώστε την κεφαλίδα Proxy-Authorization του ίδιου του proxy πριν από τη συνήθη προώθηση. Διατηρήστε το αρχικό πεδίο Authorization για τον προορισμό. Ένας ανώτερος γονικός proxy, αν υπάρχει, χρειάζεται τη δική του σκόπιμη ρύθμιση επαλήθευσης αντί να λάβει κατά λάθος αυτά τα διαπιστευτήρια του πελάτη.