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.

Aiheeseen liittyvät artikkelit