Адрас проксі паведамляе 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 карыснае для разумення гэтых паводзін, але ручное запаўненне гэтай прыватнай структуры даных прывяжа наладу да дэталяў рэалізацыі.

Падобныя артыкулы