Adresa proxy říká Emacsu, kam se má připojit. Jeho přihlášení je další částí rozhovoru. U běžného HTTP požadavku může knihovna URL v Emacsu odpovědět na výzvu k autentizaci proxy, získat přihlašovací údaje z auth-source nebo se zeptat interaktivně a znovu použít údaje držené v relaci.

Podrobnosti níže odpovídají Emacsu 31.1. Týkají se operací využívajících knihovnu URL; externí stahovač spuštěný balíčkem Emacsu má vlastní cestu autentizace.

Nastavte trasu a nechte HTTP, ať si vyžádá přihlášení

Pevný koncový bod proxy lze zvolit dokumentovanou volbou:

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

Nahraďte zástupný text dodaným koncovým bodem. Klíče popisují schémata cílové URL. Přidání položky HTTPS volí trasu pro cíle HTTPS; samo o sobě přihlašovací údaje neposkytuje.

Během běžného HTTP požadavku může proxy odpovědět 407 Proxy Authentication Required a výzvou Proxy-Authenticate. Knihovna URL zvolí podporované schéma autentizace a získá přihlašovací údaje pro koncový bod proxy. Poté to zopakuje s Proxy-Authorization.

U autentizace Basic může interaktivní požadavek vyžádat uživatelské jméno a heslo, pokud nejsou k dispozici vhodné údaje. Požadavek označený jako neinteraktivní se na tyto výzvy nemůže spoléhat. Přihlášení proxy je také oddělené od přihlášení cílového webu: výzva 401 webu sleduje jinou cestu.

Uložte trvalé údaje do auth-source

Pokud auth-source již čte šifrovaný soubor údajů, například ~/.authinfo.gpg, má položka Basic pro tento příklad tento tvar:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

Použijte svůj skutečný účet a tajemství a ujistěte se, že soubor patří mezi nakonfigurované auth-sources. Řádek ilustruje odpovídající pole; není to pokyn vložit heslo do inicializačního souboru Lisp.

V implementaci Basic v Emacsu 31.1 jsou důležité dva detaily. Vyhledává název hostitele proxy bez číselného portu TCP a předává schéma URL proxy jako hodnotu portu pro auth-source. U této HTTP proxy je tou hodnotou http, i když TCP spojení používá port 8080.

Toto vyhledávání nezahrnuje realm výzvy ani číselný port proxy. Nečekejte, že vybere různá hesla Basic pro několik realmů nebo portů proxy na stejném názvu hostitele. Digest používá jiné vyhledávání hostitele, takže výše uvedený příklad je určen konkrétně pro Basic.

Knihovna URL také udržuje vlastní mezipaměť autentizace. Její položky Basic rozlišují koncové body proxy a v rámci koncového bodu používají shodu realmu nebo adresáře; tato mezipaměť je oddělená od hledání v auth-source. Zadání hesla na výzvu může naplnit mezipaměť relace, aniž by uložilo novou položku do vašeho souboru trvalých údajů.

HTTPS má dřívější krok autentizace

Pro cíl HTTPS přes HTTP proxy Emacs nejprve odešle CONNECT. Autentizace tak může být potřeba dříve, než se dostane k šifrovanému spojení s webem.

V Emacsu 31.1 tvůrce požadavku CONNECT kontroluje autentizaci již dostupnou prostřednictvím jeho autentizačního mechanismu, včetně uložených údajů Basic. Jeho cesta Basic v tomto okamžiku nevyzývá ani nenačítá novou položku auth-source. Odpověď CONNECT jiná než 200 také nevstupuje do běžného zpracování výzvy HTTP 407 popsaného výše.

Položka auth-source, která umí odpovědět na běžnou výzvu HTTP Basic, tedy nezaručuje, že první HTTPS požadavek nové relace bude úspěšně autentizován. Relace s vhodnými uloženými údaji má jiný výchozí stav. Opakované úpravy stejné položky hesla tento rozdíl mezi oběma cestami samy o sobě neodstraní.

Pokud se operace HTTPS zastaví na proxy, zjistěte, zda CONNECT obdržel 407 a zda používáte chování tohoto vydání. Ověřte také schéma autentizace, které proxy nabízí. Položka údajů Basic není univerzální adaptér pro každý podnikový autentizační systém.

Uchovávejte trvalou konfiguraci ve veřejné volbě proxy a ve zvoleném úložišti údajů. Interní úložiště Basic knihovny URL je užitečné pro pochopení tohoto chování, ale ruční naplnění této soukromé datové struktury by připoutalo nastavení k detailům implementace.

Související články