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]ን እንደ አገልግሎት ክፍል መስጠት ሌላ አስተናጋጅ ይጨምራል። ይህ ሴተር ሙሉ የ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 ጥያቄ እና የተራ የመነሻ ጥያቄ የተለያዩ የአስተናጋጅ እሴቶች ሊኖራቸው ይችላል። የተጫነውን አተገባበር ባህሪ ያረጋግጡ፣ የአገልግሎት ስም ሴተር ሙሉውን የ407 ሂደት ያቀርባል ብለው ከመገመት ይልቅ።
ለ407፣ የproxy ማረጋገጫ ልውውጡን እና በዚያ ጥያቄ የተጠቀመውን አስተናጋጅ ይመርምሩ። 401 የመነሻ ማረጋገጫ ነው። ትክክለኛ የተጠቃሚ ቲኬት ብቻ Jetty ትክክለኛውን የአገልግሎት ቲኬት መጠየቁን ወይም ጣልቃ-ገቡ መቀበሉን አያረጋግጥም።