Jena 4.3+ SPARQL mijozlari uchun proksi autentifikatsiyasi
Zamonaviy Jena so'rov bajarilishi ishlatadigan JDK HTTP mijoziga proksi tanlagichi va autentifikatorini ulang.
Jena 4.3 da taqdim etilgan Jena ning JDK asosidagi HTTP steki uchun so'rov quruvchisiga beriladigan transportni sozlang. SPARQL yakuniy nuqtasining paroli va proksi paroli turli mashinalar tomonidan talab qilinishi mumkin.
import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.apache.jena.sparql.exec.http.QueryExecutionHTTP;
var http = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.authenticator(proxyAuthenticator)
.build();
var execution = QueryExecutionHTTP.service(endpointUrl)
.httpClient(http)
.query("ASK { ?s ?p ?o }")
.build();Bu parcha so'rov bajarilishini quradi. endpointUrl — SPARQL xizmatining haqiqiy URL manzili; proxyAuthenticator — ilova taqdim etadigan java.net.Authenticator. So'rov bajarilishini ilovaning odatdagi so'rov hayot sikli orqali ishga tushiring va yoping.
O'sha autentifikatorning getPasswordAuthentication usulida proksining PasswordAuthentication qiymatini faqat getRequestorType() == RequestorType.PROXY bo'lganda va so'rov yuboruvchi host hamda port sozlangan vositachi bilan mos kelganda qaytaring. Aloqasiz chaqiriqlar uchun null qaytaring. Bu obyektni mijozga ulash tanlovni o'sha mijoz ichida saqlaydi.
Proksi nima talab qilayotganini o'qing
407 javobi proksi autentifikatsiyasi chaqirig'ini bildiradi. Uning Proxy-Authenticate sarlavhasi taklif etilgan sxemalarni aytadi; faqat holat Basic ni NTLM yoki boshqa sxemadan ajratmaydi.
Bu taklifni o'rnatilgan JDK mijozi imkoniyatlari va autentifikatsiya siyosati bilan solishtiring. Foydalanuvchi nomi va parolni berish qo'llab-quvvatlanmaydigan sxemani qo'shmaydi. HTTPS maqsadlari uchun JDK ning jdk.http.auth.tunneling.disabledSchemes siyosatini ham tekshiring; oddiy HTTP proksisida alohida disabledSchemes sozlamasi bor. CONNECT uchun JDK ning Basic autentifikatsiya standart qiymatlari ana shunday siyosat tekshiruvlaridan biri.
Apache HttpClient va SimpleNTAuthenticator ishlatgan Jena ning tarixiy misollari eskiroq transport avlodiga tegishli. Agar korporativ proksi joriy transportda mavjud bo'lmagan autentifikatsiya mexanizmini talab qilsa, o'sha eski autentifikatsiya obyektlarini zamonaviy quruvchiga tiqishtirishga urinish o'rniga tarmoq administratori bilan qo'llab-quvvatlanadigan integratsiyani kelishing.