Jetty SPNEGO конфигурациясында үч ат бар: аутентификацияны дал келтирүү үчүн колдонулган URI, JAAS аркылуу кирген колдонуучу жана билет суралган кызмат. Алардын максаты ар башка.

Jetty 12.0.x ишке ашыруусу үчүн аутентификация объектисинин үзүндүсү мындай:

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

Бул үзүндү кызмат компонентин көрсөтөт, толук proxy аутентификация рецепти эмес. JAAS кирүү, proxy маршруттоо жана сурамдын аутентификация алмашуусу өзүнчө бойдон калат.

Бул ишке ашырууда Jetty GSS хост атын getServiceName(), @ белгиси жана аутентификация алмашуусунун хосту менен бириктирип түзөт. [email protected]ди кызмат компоненти катары берүү дагы бир хост кошот. Бул setter толук Kerberos principal кабыл алат деп болжолдоонун ордуна анын келишимин окуңуз.

Алынган GSS аты HTTP@hostname концептуалдык формасына ээ. KDCнин тиешелүү кызмат principalы адатта HTTP/hostname түрүндө берилет. тандалган proxy аты чындап катталган кызматка дал келиши керек ошол эсеп үчүн; IP дарек же лакап ат башка билет бутасын тандашы мүмкүн.

407 жолун да текшериңиз

Jetty 12.0.x ичинде authenticate() GSS хост атын request.getHost()дон алат жана демейки Authorization аталышы менен жыйынтык түзөт. Аутентификация объектин proxy URI боюнча дал келтирүү өзү эле бул тандоолорду proxy хостунун атына жана Proxy-Authorizationга өзгөртпөйт.

Ошондуктан proxy интеграциясы ошол алмашуу үчүн туура сурам хосту жана proxy менен чектелген жыйынтык талап кылат. HTTPS CONNECT сурамы жана кадимки баштапкы сурам ар башка хост маанилерине ээ болушу мүмкүн. Кызмат атынын setterи толук 407 агымын камсыз кылат деп болжолдоонун ордуна орнотулган ишке ашыруунун жүрүм-турумун ырастаңыз.

407 үчүн proxy аутентификация алмашуусун жана ошол сурам колдонгон хостту текшериңиз. 401 баштапкы аутентификацияга таандык. Жарактуу колдонуучу билети гана Jetty туура кызмат билетин сураганын же ортомчу аны кабыл алганын далилдебейт.

Тектеш макалалар