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] ને સેવા ઘટક તરીકે આપવાથી બીજો હોસ્ટ ઉમેરાશે. આ સેટર સંપૂર્ણ Kerberos principal સ્વીકારે છે એમ ધારવાને બદલે તેનો કરાર વાંચો.
પરિણામી GSS નામનું વૈચારિક સ્વરૂપ HTTP@hostname છે. KDC નું સંબંધિત સેવા principal સામાન્ય રીતે HTTP/hostname તરીકે રજૂ થાય છે. પસંદ કરેલ proxy નામ ખરેખર નોંધાયેલ સેવા સાથે મેળ ખાવું જોઈએ તે ખાતા માટે; IP સરનામું અથવા ઉપનામ બીજું ટિકિટ લક્ષ્ય પસંદ કરી શકે છે.
407 માર્ગ પણ તપાસો
Jetty 12.0.x માં authenticate() request.getHost() થી GSS હોસ્ટનામ મેળવે છે અને મૂળભૂત Authorization હેડર સાથે પરિણામ બનાવે છે. proxy URI દ્વારા પ્રમાણીકરણ ઑબ્જેક્ટ મેળવવાથી તે પસંદગીઓ જાતે proxy ના હોસ્ટનામ અને Proxy-Authorization માં બદલાતી નથી.
તેથી proxy એકીકરણને તે વિનિમય માટે યોગ્ય વિનંતી હોસ્ટ અને proxy-મર્યાદિત પરિણામ જોઈએ. HTTPS CONNECT વિનંતી અને સામાન્ય મૂળ વિનંતીના હોસ્ટ મૂલ્યો અલગ હોઈ શકે. સ્થાપિત અમલીકરણનું વર્તન ચકાસો, સેવા-નામ સેટર સંપૂર્ણ 407 પ્રવાહ આપે છે એમ ધારવાને બદલે.
407 માટે, તે વિનંતીએ વાપરેલ proxy પ્રમાણીકરણ વિનિમય અને હોસ્ટ તપાસો. 401 મૂળ પ્રમાણીકરણનું છે. ફક્ત માન્ય વપરાશકર્તા ટિકિટ સાબિત કરતી નથી કે Jetty યોગ્ય સેવા ટિકિટ માંગી હતી અથવા મધ્યસ્થીએ તે સ્વીકારી હતી.