URL-välityspalvelimen kirjautuminen Emacs 31.1:ssä: auth-source ja CONNECTin rajat
Määritä todennettu HTTP-välityspalvelin Emacsin URL-kirjastolle, ymmärrä sen Basic-tunnistetietojen haku ja ota huomioon HTTPS CONNECT -polku Emacs 31.1:ssä.
Välityspalvelimen osoite kertoo Emacsille, mihin yhdistää. Sen kirjautuminen on keskustelun toinen osa. Tavallisessa HTTP-pyynnössä Emacsin URL-kirjasto voi vastata välityspalvelimen todennuspyyntöön, hakea tunnistetiedot auth-sourcesta tai kysyä niitä vuorovaikutteisesti ja käyttää uudelleen istunnossa pidettyjä tunnistetietoja.
Alla olevat yksityiskohdat noudattavat Emacs 31.1:tä. Ne koskevat toimintoja, jotka käyttävät URL-kirjastoa; Emacs-paketin käynnistämä ulkoinen lataaja kulkee omaa todennuspolkuaan.
Aseta reitti ja anna sitten HTTP:n pyytää kirjautumista
Kiinteä välityspalvelimen päätepiste voidaan valita dokumentoidulla valinnalla:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Korvaa paikkamerkki annetulla päätepisteellä. Avaimet kuvaavat kohde-URL:n skeemoja. HTTPS-merkinnän lisääminen valitsee reitin HTTPS-kohteille; se ei itsessään toimita tunnistetietoja.
Tavallisen HTTP-pyynnön aikana välityspalvelin voi vastata 407 Proxy Authentication Required ja Proxy-Authenticate-haasteella. URL-kirjasto valitsee tuetun todennusskeeman ja hankkii tunnistetiedot välityspalvelimen päätepisteelle. Sitten se yrittää uudelleen Proxy-Authorization-otsakkeella.
Basic-todennuksessa vuorovaikutteinen pyyntö voi kysyä käyttäjänimeä ja salasanaa, kun sopivia tunnistetietoja ei ole saatavilla. Ei-vuorovaikutteiseksi merkitty pyyntö ei voi luottaa näihin kyselyihin. Välityspalvelimen kirjautuminen on myös erillään kohdesivuston kirjautumisesta: sivuston 401-haaste kulkee eri polkua.
Tallenna pysyvät tunnistetiedot auth-sourceen
Jos auth-source lukee jo salattua tunnistetiedostoa, kuten ~/.authinfo.gpg, tämän esimerkin Basic-merkintä on seuraavan muotoinen:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Käytä todellista tiliäsi ja salaisuuttasi ja varmista, että tiedosto on määritettyjen auth-sources joukossa. Rivi havainnollistaa vastaavia kenttiä; se ei ole ohje laittaa salasanaa Lispin alustustiedostoon.
Kaksi yksityiskohtaa on tärkeä Emacs 31.1:n Basic-toteutuksessa. Se etsii välityspalvelimen isäntänimen ilman numeerista TCP-porttia ja välittää välityspalvelimen URL:n skeeman auth-sourcen porttiarvona. Tässä HTTP-välityspalvelimessa arvo on http, vaikka TCP-yhteys käyttää porttia 8080.
Tämä haku ei sisällä haasteen realmia eikä numeerista välityspalvelinporttia. Älä odota, että se valitsisi eri Basic-salasanoja useille realeille tai välityspalvelinporteille samassa isäntänimessä. Digest käyttää toisenlaista isäntähakua, joten yllä oleva esimerkki on tarkoitettu erityisesti Basicille.
URL-kirjasto pitää myös omaa todennusvälimuistiaan. Sen Basic-merkinnät erottavat välityspalvelimen päätepisteet ja käyttävät realmin tai hakemiston vastaavuutta päätepisteen sisällä; välimuisti on erillinen auth-source-hausta. Salasanan kirjoittaminen kehotteeseen voi täyttää istunnon välimuistin tallentamatta uutta merkintää pysyvään tunnistetiedostoosi.
HTTPS:ssä on aikaisempi todennusvaihe
Kun HTTPS-kohde kulkee HTTP-välityspalvelimen kautta, Emacs lähettää ensin CONNECT-pyynnön. Todennus voi siis olla tarpeen ennen kuin se saavuttaa salatun yhteyden sivustoon.
Emacs 31.1:ssä CONNECT-pyynnön rakentaja tarkistaa todennuksen, joka on jo saatavilla sen todennuskoneiston kautta, mukaan lukien välimuistiin tallennetut Basic-tunnistetiedot. Sen Basic-polku ei kysy eikä hae tuoretta auth-source-merkintää siinä vaiheessa. CONNECT-vastaus, joka ei ole 200, ei myöskään päädy yllä kuvattuun tavalliseen HTTP 407 -haasteiden käsittelijään.
Näin ollen auth-source-merkintä, joka pystyy vastaamaan tavalliseen HTTP Basic -haasteeseen, ei takaa, että uuden istunnon ensimmäinen HTTPS-pyyntö todennetaan onnistuneesti. Istunnolla, jolla on sopivat välimuistiin tallennetut tunnistetiedot, on erilainen lähtötila. Saman salasanamerkinnän toistuva muokkaaminen ei yksinään poista tätä eroa kahden polun väliltä.
Jos HTTPS-toiminto pysähtyy välityspalvelimeen, selvitä, saiko CONNECT 407-vastauksen ja käytätkö tämän julkaisun toimintatapaa. Vahvista myös välityspalvelimen tarjoama todennusskeema. Basic-tunnistetietomerkintä ei ole yleispätevä sovitin kaikkiin yritystodennusjärjestelmiin.
Pidä pysyvä kokoonpano julkisessa välityspalvelinvalinnassa ja valitsemassasi tunnistetietojen taustajärjestelmässä. URL-kirjaston sisäinen Basic-varasto on hyödyllinen tämän toiminnan ymmärtämisessä, mutta sen yksityisen tietorakenteen täyttäminen käsin sitoisi asetukset toteutuksen yksityiskohtiin.