O enderezo do proxy indica a Emacs onde conectarse. O seu inicio de sesión é outra parte da conversa. Para unha solicitude HTTP ordinaria, a biblioteca URL de Emacs pode responder a un desafío de autenticación do proxy, obter credenciais de auth-source ou preguntalas de forma interactiva, e reutilizar as credenciais mantidas na sesión.

Os detalles seguintes corresponden a Emacs 31.1. Refírense a operacións que usan a biblioteca URL; un descargador externo lanzado por un paquete de Emacs ten a súa propia ruta de autenticación.

Estableza a ruta e deixe que HTTP pida o inicio de sesión

Pódese seleccionar un extremo de proxy fixo coa opción documentada:

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

Substitúa o marcador de posición polo extremo fornecido. As chaves describen os esquemas de URL de destino. Engadir a entrada HTTPS selecciona unha ruta para destinos HTTPS; por si mesma non fornece credenciais.

Durante unha solicitude HTTP ordinaria, un proxy pode responder con 407 Proxy Authentication Required e un desafío Proxy-Authenticate. A biblioteca URL escolle un esquema de autenticación admitido e obtén credenciais para o extremo do proxy. Despois volve tentar con Proxy-Authorization.

Na autenticación Basic, unha solicitude interactiva pode pedir un nome de usuario e un contrasinal cando non hai credenciais axeitadas dispoñibles. Unha solicitude marcada como non interactiva non pode confiar nesas indicacións. O inicio de sesión do proxy tamén é independente do inicio de sesión do sitio web de destino: o desafío 401 dun sitio web segue unha ruta diferente.

Garde as credenciais persistentes en auth-source

Se auth-source xa le un ficheiro de credenciais cifrado como ~/.authinfo.gpg, unha entrada Basic para este exemplo ten a forma seguinte:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

Use a súa conta e segredo reais, e asegúrese de que o ficheiro estea entre os seus auth-sources configurados. A liña ilustra os campos coincidentes; non é unha instrución para poñer un contrasinal no seu ficheiro de inicialización de Lisp.

Dous detalles importan na implementación Basic de Emacs 31.1. Busca o nome de host do proxy sen o porto TCP numérico e pasa o esquema da URL do proxy como valor de porto de auth-source. Para este proxy HTTP, ese valor é http, aínda que a conexión TCP use o porto 8080.

Esta busca non inclúe o realm do desafío nin o porto numérico do proxy. Non espere que seleccione contrasinais Basic diferentes para varios realms ou portos de proxy no mesmo nome de host. Digest usa unha busca de host distinta, así que o exemplo anterior é especificamente para Basic.

A biblioteca URL tamén mantén a súa propia caché de autenticación. As súas entradas Basic distinguen os extremos do proxy e usan coincidencia de realm ou de directorio dentro dun extremo; esa caché é independente da busca en auth-source. Escribir un contrasinal nunha indicación pode encher a caché da sesión sen gardar unha entrada nova no seu ficheiro de credenciais persistente.

HTTPS ten un paso de autenticación anterior

Para un destino HTTPS a través dun proxy HTTP, Emacs envía primeiro CONNECT. Polo tanto, a autenticación pode ser necesaria antes de chegar á conexión cifrada co sitio web.

En Emacs 31.1, o construtor de solicitudes CONNECT comproba a autenticación xa dispoñible mediante a súa maquinaria de autenticación, incluídas as credenciais Basic almacenadas na caché. A súa ruta Basic non pregunta nin obtén unha entrada nova de auth-source nese momento. Unha resposta CONNECT distinta de 200 tampouco entra no manexador de desafíos HTTP 407 ordinario descrito arriba.

En consecuencia, unha entrada de auth-source que pode responder a un desafío HTTP Basic normal non garante que a primeira solicitude HTTPS dunha sesión nova se autentique correctamente. Unha sesión con credenciais axeitadas na caché ten un estado inicial diferente. Editar repetidamente a mesma entrada de contrasinal non pode por si só eliminar esta diferenza entre as dúas rutas.

Se unha operación HTTPS se detén no proxy, determine se CONNECT recibiu 407 e se está a usar o comportamento desta versión. Confirme tamén o esquema de autenticación que ofrece o proxy. Unha entrada de credenciais Basic non é un adaptador universal para todos os sistemas de autenticación empresarial.

Manteña a configuración duradeira na opción pública do proxy e no backend de credenciais que escolleu. O almacenamento Basic interno da biblioteca URL é útil para entender este comportamento, pero encher a man esa estrutura de datos privada ligaría a configuración a detalles de implementación.

Artigos relacionados