Jetty SPNEGO konfiqurasiyasında üç ad var: autentifikasiyanı uyğunlaşdırmaq üçün istifadə olunan URI, JAAS vasitəsilə daxil olan istifadəçi və bilet tələb olunan xidmət. Onların hər birinin öz məqsədi var.

Jetty 12.0.x tətbiqi üçün autentifikasiya obyektinin fraqmenti belədir:

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

Bu fraqment xidmət komponentini göstərir, tam proxy autentifikasiyası resepti deyil. JAAS girişi, proxy marşrutlaşdırması və sorğunun autentifikasiya mübadiləsi ayrı qalır.

Bu tətbiqdə Jetty GSS host adını getServiceName(), @ simvolu və autentifikasiya mübadiləsi üçün hostu birləşdirərək qurur. [email protected] xidmət komponenti kimi vermək başqa host əlavə edərdi. Bu setterin tam Kerberos principal qəbul etdiyini fərz etmək əvəzinə müqaviləsini oxuyun.

Yaranan GSS adı konseptual olaraq HTTP@hostname formasındadır. KDC-nin uyğun xidmət principal-ı adətən HTTP/hostname kimi göstərilir. seçilmiş proxy adı faktiki qeydiyyata alınmış xidmətlə uyğun olmalıdır həmin hesab üçün; IP ünvanı və ya ləqəb başqa bilet hədəfi seçə bilər.

407 yolunu da yoxlayın

Jetty 12.0.x-də authenticate() GSS host adını request.getHost()-dan alır və standart Authorization başlığı ilə nəticə qurur. Autentifikasiya obyektini proxy URI ilə uyğunlaşdırmaq özlüyündə bu seçimləri proxy host adına və Proxy-Authorization-a dəyişmir.

Buna görə proxy inteqrasiyası həmin mübadilə üçün düzgün sorğu hostunu və proxy-yə aid nəticəni tələb edir. HTTPS CONNECT sorğusu ilə adi mənşə sorğusunun host dəyərləri fərqli ola bilər. Xidmət adı setterinin tam 407 axınını təmin etdiyini fərz etmək əvəzinə quraşdırılmış tətbiqin davranışını yoxlayın.

407 üçün həmin sorğunun istifadə etdiyi proxy autentifikasiya mübadiləsini və hostu yoxlayın. 401 mənşə autentifikasiyasına aiddir. Yalnız etibarlı istifadəçi bileti Jetty-nin düzgün xidmət bileti tələb etdiyini və ya vasitəçinin onu qəbul etdiyini sübut etmir.

Əlaqəli məqalələr