Jetty 12.0.x SPNEGO: დააყენეთ სერვისის სახელი და არა სრული principal
Jetty 12-ის ავთენტიფიკაციის კონფიგურაციისას გამოყავით proxy URI, JAAS მომხმარებელი და GSS სერვისის კომპონენტი.
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-მ სწორი სერვისის ბილეთი მოითხოვა ან შუამავალმა ის მიიღო.