Jetty 12.0.x SPNEGO: vendosni emrin e shërbimit, jo principalin e plotë
Ndani URI-në e proxy-t, përdoruesin JAAS dhe komponentin e shërbimit GSS kur konfiguroni autentikimin e Jetty 12.
Në një konfigurim SPNEGO të Jetty ka tre emra: URI-ja që përdoret për përputhjen e autentikimit, përdoruesi që hyn përmes JAAS dhe shërbimi për të cilin kërkohet një biletë. Ata kanë qëllime të ndryshme.
Për implementimin e Jetty 12.0.x, një fragment i objektit të autentikimit është:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Ky fragment ilustron komponentin e shërbimit, jo një recetë të plotë për autentikimin e proxy-t. Hyrja JAAS, rrugëtimi i proxy-t dhe shkëmbimi i autentikimit të kërkesës mbeten të ndara.
Në këtë implementim Jetty ndërton emrin GSS bazuar në host duke kombinuar getServiceName(), karakterin @ dhe hostin për shkëmbimin e autentikimit. Nëse jepet [email protected] si komponent shërbimi, do të shtohej një host tjetër. Lexoni kontratën e këtij setter në vend që të supozoni se pranon një principal të plotë Kerberos.
Emri GSS që rezulton ka formën konceptuale HTTP@hostname. Principali përkatës i shërbimit në KDC zakonisht paraqitet si HTTP/hostname. emri i proxy-t i zgjedhur duhet të përputhet me shërbimin e regjistruar në të vërtetë për atë llogari; një adresë IP ose alias mund të zgjedhë një objektiv tjetër bilete.
Kontrolloni edhe rrugën 407
Në Jetty 12.0.x authenticate() merr emrin e hostit GSS nga request.getHost() dhe ndërton një rezultat me kokën Authorization të parazgjedhur. Përputhja e një objekti autentikimi sipas URI-së së proxy-t nuk i ndryshon vetë ato zgjedhje në emrin e hostit të proxy-t dhe Proxy-Authorization.
Prandaj një integrim proxy ka nevojë për hostin e saktë të kërkesës dhe një rezultat të kufizuar në proxy për atë shkëmbim. Një kërkesë HTTPS CONNECT dhe një kërkesë e zakonshme origjine mund të kenë vlera të ndryshme hosti. Konfirmoni sjelljen e implementimit të instaluar në vend që të supozoni se setter-i i emrit të shërbimit ofron të gjithë rrjedhën 407.
Për një 407, shqyrtoni shkëmbimin e autentikimit të proxy-t dhe hostin e përdorur nga ajo kërkesë. Një 401 i përket autentikimit të origjinës. Një biletë e vlefshme përdoruesi vetëm nuk provon që Jetty kërkoi biletën e duhur të shërbimit ose që ndërmjetësi e pranoi atë.