Jetty 12.0.x SPNEGO៖ កំណត់ឈ្មោះសេវា មិនមែន principal ពេញលេញទេ
បំបែក proxy URI អ្នកប្រើ JAAS និងធាតុសេវា GSS នៅពេលកំណត់ការផ្ទៀងផ្ទាត់ Jetty 12។
នៅក្នុងការកំណត់ SPNEGO របស់ Jetty មានឈ្មោះបី៖ 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 នេះ ជំនួសឱ្យការសន្មត់ថាវាទទួល principal Kerberos ពេញលេញ។
ឈ្មោះ GSS លទ្ធផលមានទម្រង់សម្មតិកម្ម HTTP@hostname។ principal សេវាដែលត្រូវគ្នារបស់ KDC ជាធម្មតាត្រូវបានតំណាងជា 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 បានស្នើសំបុត្រសេវាត្រឹមត្រូវ ឬអ្នកកណ្តាលបានទទួលវាទេ។