Jetty SPNEGO -kokoonpanossa on kolme nimeä: todennuksen sovittamiseen käytettävä URI, JAASin kautta kirjautuva käyttäjä ja palvelu, jolle lippu pyydetään. Niillä on eri tarkoitus.

Jetty 12.0.x -toteutuksessa todennusobjektin katkelma on:

var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
    java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");

Tämä katkelma havainnollistaa palvelukomponenttia, ei täydellistä proxy-todennuksen reseptiä. JAAS-kirjautuminen, proxyn reititys ja pyynnön todennusvaihto pysyvät erillisinä.

Tässä toteutuksessa Jetty muodostaa GSS-isäntänimen yhdistämällä getServiceName(), @-merkin ja todennusvaihdon isäntänimen. Jos palvelukomponentiksi annetaan [email protected], siihen lisättäisiin toinen isäntä. Lue tämän setterin sopimus sen sijaan, että olettaisit sen hyväksyvän täydellisen Kerberos-principalin.

Tuloksena oleva GSS-nimi on käsitteellisesti muotoa HTTP@hostname. KDC:n vastaava palvelu-principal esitetään yleensä muodossa HTTP/hostname. valitun proxy-nimen on vastattava palvelua, joka on tosiasiassa rekisteröity kyseiselle tilille; IP-osoite tai alias voi valita toisen lipun kohteen.

Tarkista myös 407-polku

Jetty 12.0.x:ssä authenticate() hakee GSS-isäntänimen request.getHost()-kutsusta ja muodostaa tuloksen oletusarvoisella Authorization-otsikolla. Todennusobjektin sovittaminen proxy-URI:n mukaan ei itsessään muuta näitä valintoja proxyn isäntänimeksi ja Proxy-Authorizationiksi.

Siksi proxy-integraatio tarvitsee oikean pyyntöisännän ja proxyyn rajautuvan tuloksen tälle vaihdolle. HTTPS CONNECT -pyynnöllä ja tavallisella alkuperäpyynnöllä voi olla eri isäntäarvot. Vahvista asennetun toteutuksen käyttäytyminen sen sijaan, että olettaisit palvelunimen setterin tarjoavan koko 407-virran.

407:n kohdalla tarkista proxy-todennusvaihto ja kyseisen pyynnön käyttämä isäntä. 401 kuuluu alkuperän todennukseen. Pelkkä kelvollinen käyttäjän lippu ei todista, että Jetty pyysi oikean palvelulipun tai että välittäjä hyväksyi sen.

Aiheeseen liittyvät artikkelit