Пријава преко URL проксија у Emacsu 31.1: auth-source и ограничења CONNECT
Подесите аутентификовани HTTP прокси за URL библиотеку Emacsa, разумите његову претрагу Basic акредитива и узмите у обзир HTTPS CONNECT пут у Emacsu 31.1.
Адреса проксија говори Emacsu где да се повеже. Његова пријава је други део разговора. За обичан HTTP захтев, URL библиотека Emacsa може да одговори на изазов аутентификације проксија, да добије акредитиве из 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 имплементацији Emacsa 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. Аутентификација стога може бити потребна пре него што стигне до шифроване везе са веб-сајтом.
У Emacsu 31.1, градитељ CONNECT захтева проверава аутентификацију која је већ доступна кроз његов механизам аутентификације, укључујући кеширане Basic акредитиве. Његов Basic пут не пита и не прибавља свеж auth-source унос у том тренутку. CONNECT одговор који није 200 такође не улази у уобичајени HTTP 407 обрађивач изазова описан горе.
Према томе, auth-source унос који може да одговори на нормалан HTTP Basic изазов не гарантује да ће први HTTPS захтев нове сесије бити успешно аутентификован. Сесија са одговарајућим кешираним акредитивима има другачије почетно стање. Поновљено уређивање истог уноса лозинке не може само по себи уклонити ту разлику између два пута.
Ако се HTTPS радња заустави на проксију, утврдите да ли је CONNECT примио 407 и да ли користите понашање овог издања. Потврдите и шему аутентификације коју прокси нуди. Basic унос акредитива није универзални адаптер за сваки пословни систем аутентификације.
Држите трајну конфигурацију у јавној опцији проксија и у изабраном складишту акредитива. Интерно Basic складиште URL библиотеке корисно је за разумевање овог понашања, али ручно попуњавање те приватне структуре података везало би подешавање за детаље имплементације.