Η διεύθυνση του διαμεσολαβητή λέει στο Emacs πού να συνδεθεί. Η σύνδεση είναι ένα άλλο μέρος της συνομιλίας. Για ένα συνηθισμένο αίτημα HTTP, η βιβλιοθήκη URL του Emacs μπορεί να απαντήσει σε πρόκληση ελέγχου ταυτότητας του διαμεσολαβητή, να λάβει διαπιστευτήρια από το auth-source ή να τα ζητήσει διαδραστικά και να επαναχρησιμοποιήσει διαπιστευτήρια που κρατούνται στη συνεδρία.

Οι παρακάτω λεπτομέρειες ακολουθούν το Emacs 31.1. Αφορούν λειτουργίες που χρησιμοποιούν τη βιβλιοθήκη URL· ένας εξωτερικός λήπτης που εκκινεί ένα πακέτο του Emacs έχει τη δική του διαδρομή ελέγχου ταυτότητας.

Ορίστε τη διαδρομή και αφήστε το HTTP να ζητήσει τη σύνδεση

Ένα σταθερό τελικό σημείο διαμεσολαβητή μπορεί να επιλεγεί με την τεκμηριωμένη επιλογή:

(setq url-proxy-services
      '(("http" . "proxy.example:8080")
        ("https" . "proxy.example:8080")))

Αντικαταστήστε το σύμβολο θέσης με το τελικό σημείο που σας δόθηκε. Τα κλειδιά περιγράφουν τα σχήματα URL προορισμού. Η προσθήκη της καταχώρισης HTTPS επιλέγει διαδρομή για προορισμούς HTTPS· δεν παρέχει από μόνη της διαπιστευτήρια.

Κατά τη διάρκεια ενός συνηθισμένου αιτήματος HTTP, ο διαμεσολαβητής μπορεί να απαντήσει με 407 Proxy Authentication Required και πρόκληση Proxy-Authenticate. Η βιβλιοθήκη URL επιλέγει ένα υποστηριζόμενο σχήμα ελέγχου ταυτότητας και λαμβάνει διαπιστευτήρια για το τελικό σημείο του διαμεσολαβητή. Στη συνέχεια επαναλαμβάνει με Proxy-Authorization.

Για έλεγχο ταυτότητας Basic, ένα διαδραστικό αίτημα μπορεί να ζητήσει όνομα χρήστη και κωδικό όταν δεν υπάρχουν κατάλληλα διαπιστευτήρια. Ένα αίτημα που έχει σημανθεί ως μη διαδραστικό δεν μπορεί να βασιστεί σε αυτές τις προτροπές. Η σύνδεση στον διαμεσολαβητή είναι επίσης ξεχωριστή από τη σύνδεση στον ιστότοπο προορισμού: η πρόκληση 401 ενός ιστότοπου ακολουθεί διαφορετική διαδρομή.

Τοποθετήστε μόνιμα διαπιστευτήρια στο auth-source

Αν το auth-source διαβάζει ήδη ένα κρυπτογραφημένο αρχείο διαπιστευτηρίων όπως το ~/.authinfo.gpg, μια καταχώριση Basic για αυτό το παράδειγμα έχει την εξής μορφή:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

Χρησιμοποιήστε τον πραγματικό σας λογαριασμό και το μυστικό σας και βεβαιωθείτε ότι το αρχείο περιλαμβάνεται στα ρυθμισμένα auth-sources. Η γραμμή απεικονίζει πεδία αντιστοίχισης· δεν είναι οδηγία να βάλετε κωδικό στο αρχείο αρχικοποίησης Lisp.

Δύο λεπτομέρειες έχουν σημασία στην υλοποίηση Basic του Emacs 31.1. Αναζητά το όνομα κεντρικού υπολογιστή του διαμεσολαβητή χωρίς την αριθμητική θύρα TCP και περνά το σχήμα του URL του διαμεσολαβητή ως τιμή θύρας του auth-source. Για αυτόν τον διαμεσολαβητή HTTP, η τιμή αυτή είναι http, παρόλο που η σύνδεση TCP χρησιμοποιεί θύρα 8080.

Αυτή η αναζήτηση δεν περιλαμβάνει το realm της πρόκλησης ούτε την αριθμητική θύρα του διαμεσολαβητή. Μην περιμένετε να επιλέξει διαφορετικούς κωδικούς Basic για πολλά realm ή θύρες διαμεσολαβητή στο ίδιο όνομα κεντρικού υπολογιστή. Το Digest χρησιμοποιεί διαφορετική αναζήτηση κεντρικού υπολογιστή, επομένως το παραπάνω παράδειγμα αφορά ειδικά το Basic.

Η βιβλιοθήκη URL διατηρεί επίσης τη δική της προσωρινή μνήμη ελέγχου ταυτότητας. Οι καταχωρίσεις Basic διακρίνουν τελικά σημεία διαμεσολαβητή και χρησιμοποιούν αντιστοίχιση realm ή καταλόγου εντός ενός τελικού σημείου· αυτή η μνήμη είναι ξεχωριστή από την αναζήτηση στο auth-source. Η πληκτρολόγηση κωδικού σε μια προτροπή μπορεί να γεμίσει τη μνήμη της συνεδρίας χωρίς να αποθηκεύσει νέα καταχώριση στο μόνιμο αρχείο διαπιστευτηρίων σας.

Το HTTPS έχει προγενέστερο βήμα ελέγχου ταυτότητας

Για προορισμό HTTPS μέσω διαμεσολαβητή HTTP, το Emacs στέλνει πρώτα CONNECT. Επομένως, ο έλεγχος ταυτότητας μπορεί να χρειάζεται πριν φτάσει στην κρυπτογραφημένη σύνδεση με τον ιστότοπο.

Στο Emacs 31.1, ο κατασκευαστής αιτημάτων CONNECT ελέγχει για έλεγχο ταυτότητας που είναι ήδη διαθέσιμος μέσω του μηχανισμού του, συμπεριλαμβανομένων αποθηκευμένων διαπιστευτηρίων Basic. Η διαδρομή Basic δεν ζητά ούτε ανακτά νέα καταχώριση auth-source εκείνη τη στιγμή. Μια απάντηση CONNECT που δεν είναι 200 επίσης δεν εισέρχεται στον συνηθισμένο χειριστή πρόκλησης HTTP 407 που περιγράφηκε παραπάνω.

Κατά συνέπεια, μια καταχώριση auth-source που μπορεί να απαντήσει σε κανονική πρόκληση HTTP Basic δεν εγγυάται ότι το πρώτο αίτημα HTTPS μιας νέας συνεδρίας θα ελεγχθεί επιτυχώς. Μια συνεδρία με κατάλληλα αποθηκευμένα διαπιστευτήρια έχει διαφορετική αρχική κατάσταση. Η επανειλημμένη επεξεργασία της ίδιας καταχώρισης κωδικού δεν μπορεί από μόνη της να άρει αυτή τη διαφορά μεταξύ των δύο διαδρομών.

Αν μια λειτουργία HTTPS σταματήσει στον διαμεσολαβητή, εξακριβώστε αν το CONNECT έλαβε 407 και αν χρησιμοποιείτε τη συμπεριφορά αυτής της έκδοσης. Επιβεβαιώστε επίσης το σχήμα ελέγχου ταυτότητας που προσφέρει ο διαμεσολαβητής. Μια καταχώριση διαπιστευτηρίων Basic δεν είναι καθολικός προσαρμογέας για κάθε εταιρικό σύστημα ελέγχου ταυτότητας.

Κρατήστε τη μόνιμη διαμόρφωση στη δημόσια επιλογή διαμεσολαβητή και στο επιλεγμένο σύστημα διαπιστευτηρίων σας. Ο εσωτερικός χώρος αποθήκευσης Basic της βιβλιοθήκης URL είναι χρήσιμος για την κατανόηση αυτής της συμπεριφοράς, αλλά η χειροκίνητη πλήρωση αυτής της ιδιωτικής δομής δεδομένων θα έδενε τη ρύθμιση με λεπτομέρειες υλοποίησης.

Σχετικά άρθρα