Најава на URL прокси во Emacs 31.1: auth-source и ограничувања на CONNECT
Поставете автентифициран HTTP прокси за URL библиотеката на Emacs, разберете го неговото пребарување на Basic акредитиви и земете ја предвид патеката HTTPS CONNECT во Emacs 31.1.
Адресата на проксито му кажува на 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 библиотеката е корисно за разбирање на ова однесување, но рачното пополнување на таа приватна структура на податоци би ја врзало поставката за деталите на имплементацијата.