Emacs 31.1 дахь URL прокси нэвтрэлт: auth-source ба CONNECT-ийн хязгаар
Emacs-ийн URL сангийн хувьд баталгаажуулалттай HTTP прокси тохируулж, түүний Basic итгэмжлэлийн хайлтыг ойлгож, Emacs 31.1 дахь HTTPS CONNECT замыг анхаарч үзээрэй.
Проксигийн хаяг Emacs-д хаана холбогдохыг хэлнэ. Түүний нэвтрэлт ярианы өөр нэг хэсэг юм. Энгийн HTTP хүсэлтийн хувьд Emacs-ийн URL сан проксигийн баталгаажуулалтын сорилтод хариулж, 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 эхлүүлэх файлд нууц үг хийх заавар биш.
Emacs 31.1-ийн Basic хэрэгжүүлэлтэд хоёр зүйл чухал. Энэ нь проксигийн хост нэрийг тоон TCP портгүйгээр хайж, прокси URL-ийн схемийг auth-source-ийн портын утга болгон дамжуулдаг. Энэ HTTP проксид TCP холболт 8080 портыг ашигладаг ч, тэр утга нь http.
Энэ хайлт нь сорилтын realm эсвэл тоон прокси портыг оруулахгүй. Нэг хост нэр дээр хэд хэдэн realm эсвэл прокси портын хувьд өөр өөр Basic нууц үг сонгоно гэж бүү хүлээ. Digest өөр хост хайлт ашигладаг тул дээрх жишээ зөвхөн Basic-д зориулагдсан.
URL сан мөн өөрийн баталгаажуулалтын кэшийг хадгалдаг. Түүний Basic бичлэгүүд проксигийн төгсгөлийн цэгүүдийг ялгаж, төгсгөлийн цэгийн дотор realm эсвэл хавтасны тохирлыг ашигладаг; тэр кэш нь auth-source хайлтаас тусдаа. Асуултын үед нууц үг бичих нь байнгын итгэмжлэлийн файлд шинэ бичлэг хадгалахгүйгээр сессийн кэшийг дүүргэж болно.
HTTPS-д эрт баталгаажуулалтын алхам байна
HTTP проксигоор дамжсан HTTPS очих газарт Emacs эхлээд CONNECT илгээдэг. Тиймээс вэбсайттай шифрлэгдсэн холболтод хүрэхээс өмнө баталгаажуулалт шаардлагатай байж болно.
Emacs 31.1-д CONNECT хүсэлтийг бүтээгч нь баталгаажуулалтын механизмаараа аль хэдийн боломжтой баталгаажуулалтыг, үүний дотор кэшлэсэн Basic итгэмжлэлийг шалгадаг. Түүний Basic зам тэр үед шинэ auth-source бичлэг асуухгүй, татахгүй. 200 бус CONNECT хариулт ч дээр тайлбарласан энгийн HTTP 407 сорилтын боловсруулагч руу орохгүй.
Иймээс энгийн HTTP Basic сорилтод хариулж чадах auth-source бичлэг нь шинэ сессийн эхний HTTPS хүсэлт амжилттай баталгаажина гэдгийг баталгаажуулахгүй. Тохиромжтой кэшлэсэн итгэмжлэлтэй сесс өөр эхлэх төлөвтэй. Ижил нууц үгийн бичлэгийг дахин дахин засах нь хоёр замын хоорондох энэ ялгааг өөрөө арилгаж чадахгүй.
Хэрэв HTTPS үйлдэл прокси дээр зогсвол CONNECT 407 хүлээж авсан эсэх, энэ хувилбарын зан төлөвийг ашиглаж байгаа эсэхээ тогтоогоорой. Проксигийн санал болгож буй баталгаажуулалтын схемийг ч баталгаажуулаарай. Basic итгэмжлэлийн бичлэг нь бүх аж ахуйн нэгжийн баталгаажуулалтын системд зориулсан бүх нийтийн адаптер биш.
Байнгын тохиргоог нийтийн прокси сонголт болон таны сонгосон итгэмжлэлийн бэкендэд хадгалаарай. URL сангийн дотоод Basic агуулах нь энэ зан төлөвийг ойлгоход хэрэгтэй, гэхдээ тэр хувийн өгөгдлийн бүтцийг гараар дүүргэх нь тохиргоог хэрэгжүүлэлтийн нарийн ширийнтэй холбох болно.