Het adres van de proxy vertelt Emacs waar het moet verbinden. De login is een ander deel van het gesprek. Voor een gewoon HTTP-verzoek kan de URL-bibliotheek van Emacs een authenticatie-uitdaging van de proxy beantwoorden, referenties uit auth-source halen of er interactief naar vragen, en referenties hergebruiken die in de sessie worden gehouden.

De details hieronder volgen Emacs 31.1. Ze betreffen bewerkingen die de URL-bibliotheek gebruiken; een externe downloader die door een Emacs-pakket wordt gestart, heeft zijn eigen authenticatiepad.

Stel de route in en laat HTTP dan om de login vragen

Een vast proxy-eindpunt kan met de gedocumenteerde optie worden gekozen:

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

Vervang de plaatsaanduiding door het geleverde eindpunt. De sleutels beschrijven de URL-schema's van de bestemming. Het toevoegen van de HTTPS-regel kiest een route voor HTTPS-bestemmingen; het levert zelf geen referenties.

Tijdens een gewoon HTTP-verzoek kan een proxy antwoorden met 407 Proxy Authentication Required en een Proxy-Authenticate-uitdaging. De URL-bibliotheek kiest een ondersteund authenticatieschema en haalt referenties op voor het proxy-eindpunt. Daarna probeert het opnieuw met Proxy-Authorization.

Bij Basic-authenticatie kan een interactief verzoek om een gebruikersnaam en wachtwoord vragen wanneer er geen geschikte referenties beschikbaar zijn. Een verzoek dat als niet-interactief is gemarkeerd, kan niet op die vragen vertrouwen. De proxylogin staat ook los van de login van de bestemmingswebsite: de 401-uitdaging van een website volgt een ander pad.

Plaats blijvende referenties in auth-source

Als auth-source al een versleuteld referentiebestand leest zoals ~/.authinfo.gpg, heeft een Basic-regel voor dit voorbeeld de volgende vorm:

machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD

Gebruik uw werkelijke account en geheim, en zorg dat het bestand bij uw geconfigureerde auth-sources hoort. De regel illustreert overeenkomende velden; het is geen instructie om een wachtwoord in uw Lisp-initialisatiebestand te zetten.

Twee details zijn belangrijk in de Basic-implementatie van Emacs 31.1. Ze zoekt de hostnaam van de proxy op zonder de numerieke TCP-poort, en geeft het schema van de proxy-URL door als poortwaarde voor auth-source. Voor deze HTTP-proxy is die waarde http, ook al gebruikt de TCP-verbinding poort 8080.

Deze opzoeking bevat niet de realm van de uitdaging of de numerieke proxy-poort. Verwacht niet dat ze verschillende Basic-wachtwoorden kiest voor meerdere realms of proxy-poorten op dezelfde hostnaam. Digest gebruikt een andere hostopzoeking, dus het voorbeeld hierboven is specifiek voor Basic.

De URL-bibliotheek houdt ook een eigen authenticatiecache bij. De Basic-regels onderscheiden proxy-eindpunten en gebruiken realm- of mapovereenkomst binnen een eindpunt; die cache staat los van de auth-source-opzoeking. Een wachtwoord bij een prompt typen kan de sessiecache vullen zonder een nieuwe regel in uw blijvende referentiebestand op te slaan.

HTTPS heeft een eerdere authenticatiestap

Voor een HTTPS-bestemming via een HTTP-proxy stuurt Emacs eerst CONNECT. Authenticatie kan dus nodig zijn voordat het de versleutelde verbinding met de website bereikt.

In Emacs 31.1 controleert de bouwer van CONNECT-verzoeken op authenticatie die al beschikbaar is via zijn authenticatiemachinerie, inclusief gecachte Basic-referenties. Het Basic-pad vraagt op dat moment niet om en haalt geen nieuwe auth-source-regel op. Een CONNECT-respons die niet 200 is, komt ook niet in de gewone HTTP 407-uitdagingshandler die hierboven is beschreven.

Daarom garandeert een auth-source-regel die een normale HTTP Basic-uitdaging kan beantwoorden niet dat het eerste HTTPS-verzoek van een nieuwe sessie met succes wordt geauthenticeerd. Een sessie met geschikte gecachte referenties heeft een andere begintoestand. Hetzelfde wachtwoorditem steeds opnieuw bewerken kan dit verschil tussen de twee paden niet op zichzelf wegnemen.

Als een HTTPS-bewerking bij de proxy stopt, stel dan vast of CONNECT 407 heeft ontvangen en of u het gedrag van deze release gebruikt. Bevestig ook het authenticatieschema dat de proxy aanbiedt. Een Basic-referentieregel is geen universele adapter voor elk enterprise-authenticatiesysteem.

Houd de blijvende configuratie in de openbare proxy-optie en in de referentiebackend die u hebt gekozen. De interne Basic-opslag van de URL-bibliotheek is nuttig om dit gedrag te begrijpen, maar die privégegevensstructuur met de hand vullen zou de opzet aan implementatiedetails binden.

Gerelateerde artikelen