Inici de sessió del proxy URL a Emacs 31.1: auth-source i límits de CONNECT
Configureu un proxy HTTP autenticat per a la biblioteca URL d'Emacs, enteneu la cerca de credencials Basic i tingueu en compte el camí HTTPS CONNECT a Emacs 31.1.
L'adreça del proxy diu a Emacs on ha de connectar-se. El seu inici de sessió és una altra part de la conversa. Per a una petició HTTP ordinària, la biblioteca URL d'Emacs pot respondre a un repte d'autenticació del proxy, obtenir credencials d'auth-source o demanar-les interactivament, i reutilitzar les credencials mantingudes a la sessió.
Els detalls següents segueixen Emacs 31.1. Fan referència a operacions que utilitzen la biblioteca URL; un descarregador extern iniciat per un paquet d'Emacs té el seu propi camí d'autenticació.
Establiu la ruta i deixeu que HTTP demani l'inici de sessió
Es pot seleccionar un punt final fix de proxy amb l'opció documentada:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Substituïu el marcador de posició pel punt final proporcionat. Les claus descriuen els esquemes d'URL de destinació. Afegir l'entrada HTTPS selecciona una ruta per a destinacions HTTPS; no subministra credencials per si mateixa.
Durant una petició HTTP ordinària, un proxy pot respondre amb 407 Proxy Authentication Required i un repte Proxy-Authenticate. La biblioteca URL tria un esquema d'autenticació compatible i obté credencials per al punt final del proxy. Després torna a provar amb Proxy-Authorization.
Per a l'autenticació Basic, una petició interactiva pot demanar un nom d'usuari i una contrasenya quan no hi ha credencials adequades disponibles. Una petició marcada com a no interactiva no pot confiar en aquestes indicacions. L'inici de sessió del proxy també és independent de l'inici de sessió del lloc web de destinació: el repte 401 d'un lloc web segueix un camí diferent.
Poseu les credencials persistents a auth-source
Si auth-source ja llegeix un fitxer de credencials xifrat com ~/.authinfo.gpg, una entrada Basic per a aquest exemple té la forma següent:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Utilitzeu el vostre compte i secret reals, i assegureu-vos que el fitxer sigui entre els auth-sources que heu configurat. La línia il·lustra els camps coincidents; no és una instrucció per posar una contrasenya al vostre fitxer d'inicialització de Lisp.
Dos detalls importen en la implementació Basic d'Emacs 31.1. Cerca el nom d'amfitrió del proxy sense el port TCP numèric, i passa l'esquema de l'URL del proxy com a valor de port d'auth-source. Per a aquest proxy HTTP, aquest valor és http, tot i que la connexió TCP utilitza el port 8080.
Aquesta cerca no inclou el realm del repte ni el port numèric del proxy. No espereu que seleccioni contrasenyes Basic diferents per a diversos realms o ports de proxy al mateix nom d'amfitrió. Digest utilitza una cerca d'amfitrió diferent, així que l'exemple anterior és específicament per a Basic.
La biblioteca URL també manté la seva pròpia memòria cau d'autenticació. Les seves entrades Basic distingeixen els punts finals del proxy i utilitzen la coincidència de realm o de directori dins d'un punt final; aquesta memòria cau és separada de la cerca a auth-source. Escriure una contrasenya en una indicació pot omplir la memòria cau de la sessió sense desar una entrada nova al vostre fitxer de credencials persistent.
HTTPS té un pas d'autenticació anterior
Per a una destinació HTTPS a través d'un proxy HTTP, Emacs envia primer CONNECT. Per tant, l'autenticació pot ser necessària abans que arribi a la connexió xifrada amb el lloc web.
A Emacs 31.1, el constructor de peticions CONNECT comprova l'autenticació ja disponible a través de la seva maquinària d'autenticació, incloses les credencials Basic emmagatzemades a la memòria cau. El seu camí Basic no demana ni obté una entrada nova d'auth-source en aquest moment. Una resposta CONNECT que no sigui 200 tampoc entra al gestor de reptes HTTP 407 ordinari descrit més amunt.
En conseqüència, una entrada d'auth-source que pot respondre a un repte HTTP Basic normal no garanteix que la primera petició HTTPS d'una sessió nova s'autentiqui correctament. Una sessió amb credencials emmagatzemades adequades té un estat inicial diferent. Editar repetidament la mateixa entrada de contrasenya no pot eliminar per si mateix aquesta diferència entre els dos camins.
Si una operació HTTPS s'atura al proxy, determineu si CONNECT va rebre 407 i si esteu utilitzant el comportament d'aquesta versió. Confirmeu també l'esquema d'autenticació que ofereix el proxy. Una entrada de credencials Basic no és un adaptador universal per a tots els sistemes d'autenticació empresarial.
Mantingueu la configuració duradora a l'opció pública del proxy i al rerefons de credencials que hàgiu triat. L'emmagatzematge Basic intern de la biblioteca URL és útil per entendre aquest comportament, però omplir manualment aquesta estructura de dades privada lligaria la configuració a detalls d'implementació.