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 нь getServiceName(), @ тэмдэгт, баталгаажуулалтын солилцооны хост-ыг нэгтгэж GSS хостод суурилсан нэрийг бүрдүүлдэг. [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 зөв үйлчилгээний тасалбар хүссэн эсвэл зуучлагч үүнийг хүлээн авсан гэдгийг нотлохгүй.