Prihlásenie k proxy URL v Emacse 31.1: auth-source a limity CONNECT
Nastavte autentifikovanú HTTP proxy pre knižnicu URL v Emacse, pochopte vyhľadávanie prihlasovacích údajov Basic a počítajte s cestou HTTPS CONNECT v Emacse 31.1.
Adresa proxy hovorí Emacsu, kam sa pripojiť. Jeho prihlásenie je ďalšou časťou rozhovoru. Pri bežnej HTTP požiadavke môže knižnica URL v Emacse odpovedať na výzvu na autentifikáciu proxy, získať prihlasovacie údaje z auth-source alebo sa opýtať interaktívne a znova použiť údaje uchované v relácii.
Podrobnosti nižšie zodpovedajú Emacsu 31.1. Týkajú sa operácií, ktoré používajú knižnicu URL; externý sťahovač spustený balíkom Emacsu má vlastnú cestu autentifikácie.
Nastavte trasu a potom nechajte HTTP požiadať o prihlásenie
Pevný koncový bod proxy možno zvoliť dokumentovanou voľbou:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Nahraďte zástupný text dodaným koncovým bodom. Kľúče opisujú schémy URL cieľa. Pridanie položky HTTPS volí trasu pre ciele HTTPS; samo o sebe neposkytuje prihlasovacie údaje.
Počas bežnej HTTP požiadavky môže proxy odpovedať 407 Proxy Authentication Required a výzvou Proxy-Authenticate. Knižnica URL zvolí podporovanú schému autentifikácie a získa prihlasovacie údaje pre koncový bod proxy. Potom to zopakuje s Proxy-Authorization.
Pri autentifikácii Basic môže interaktívna požiadavka vyžiadať používateľské meno a heslo, ak nie sú k dispozícii vhodné údaje. Požiadavka označená ako neinteraktívna sa na tieto výzvy nemôže spoliehať. Prihlásenie k proxy je tiež oddelené od prihlásenia na cieľovú webovú stránku: výzva 401 webovej stránky sleduje inú cestu.
Uložte trvalé údaje do auth-source
Ak auth-source už číta šifrovaný súbor údajov, napríklad ~/.authinfo.gpg, má položka Basic pre tento príklad tento tvar:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Použite svoj skutočný účet a tajomstvo a uistite sa, že súbor patrí medzi nakonfigurované auth-sources. Riadok ilustruje zodpovedajúce polia; nie je to pokyn vložiť heslo do inicializačného súboru Lisp.
V implementácii Basic v Emacse 31.1 sú dôležité dva detaily. Vyhľadáva názov hostiteľa proxy bez číselného portu TCP a odovzdáva schému URL proxy ako hodnotu portu pre auth-source. Pri tejto HTTP proxy je tou hodnotou http, hoci TCP spojenie používa port 8080.
Toto vyhľadávanie nezahŕňa realm výzvy ani číselný port proxy. Neočakávajte, že vyberie rôzne heslá Basic pre niekoľko realmov alebo portov proxy na rovnakom názve hostiteľa. Digest používa iné vyhľadávanie hostiteľa, takže vyššie uvedený príklad je určený konkrétne pre Basic.
Knižnica URL tiež udržiava vlastnú vyrovnávaciu pamäť autentifikácie. Jej položky Basic rozlišujú koncové body proxy a v rámci koncového bodu používajú zhodu realmu alebo adresára; táto pamäť je oddelená od hľadania v auth-source. Zadanie hesla na výzvu môže naplniť pamäť relácie bez uloženia novej položky do vášho súboru trvalých údajov.
HTTPS má skorší krok autentifikácie
Pre cieľ HTTPS cez HTTP proxy Emacs najprv odošle CONNECT. Autentifikácia preto môže byť potrebná skôr, než sa dostane k šifrovanému spojeniu s webovou stránkou.
V Emacse 31.1 tvorca požiadavky CONNECT kontroluje autentifikáciu už dostupnú prostredníctvom svojho mechanizmu autentifikácie vrátane údajov Basic vo vyrovnávacej pamäti. Jeho cesta Basic v tom okamihu nevyžaduje ani nenačítava novú položku auth-source. Odpoveď CONNECT iná ako 200 tiež nevstupuje do bežného spracovania výzvy HTTP 407 opísaného vyššie.
Položka auth-source, ktorá dokáže odpovedať na bežnú výzvu HTTP Basic, teda nezaručuje, že prvá HTTPS požiadavka novej relácie bude úspešne autentifikovaná. Relácia s vhodnými údajmi vo vyrovnávacej pamäti má iný počiatočný stav. Opakované úpravy tej istej položky hesla tento rozdiel medzi oboma cestami samy o sebe neodstránia.
Ak sa operácia HTTPS zastaví na proxy, zistite, či CONNECT dostal 407 a či používate správanie tohto vydania. Overte aj schému autentifikácie, ktorú proxy ponúka. Položka údajov Basic nie je univerzálny adaptér pre každý podnikový autentifikačný systém.
Uchovávajte trvalú konfiguráciu vo verejnej voľbe proxy a vo zvolenom úložisku údajov. Interné úložisko Basic knižnice URL je užitočné na pochopenie tohto správania, ale ručné naplnenie tejto súkromnej dátovej štruktúry by pripútalo nastavenie k detailom implementácie.