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 дұрыс қызмет билетін сұрағанын немесе делдал оны қабылдағанын дәлелдемейді.

Қатысты мақалалар