Jena 4.3+ SPARQL क्लाइन्टहरूका लागि प्रोक्सी प्रमाणीकरण
आधुनिक Jena क्वेरी कार्यान्वयनले प्रयोग गर्ने JDK HTTP क्लाइन्टमा प्रोक्सी चयनकर्ता र प्रमाणक जोड्नुहोस्।
Jena 4.3 मा सुरु गरिएको Jena को JDK-आधारित HTTP स्ट्याकका लागि, क्वेरी बिल्डरलाई दिइने transport कन्फिगर गर्नुहोस्। SPARQL अन्त्य बिन्दुको पासवर्ड र प्रोक्सीको पासवर्ड फरक फरक मेसिनले माग्न सक्छन्।
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();यो खण्डले क्वेरी कार्यान्वयन बनाउँछ। endpointUrl वास्तविक SPARQL सेवाको URL हो; proxyAuthenticator अनुप्रयोगले उपलब्ध गराउने java.net.Authenticator हो। अनुप्रयोगको सामान्य क्वेरी जीवनचक्रबाट क्वेरी कार्यान्वयन चलाउनुहोस् र बन्द गर्नुहोस्।
त्यो प्रमाणकको getPasswordAuthentication विधिमा, प्रोक्सीको PasswordAuthentication तब मात्र फर्काउनुहोस् जब getRequestorType() == RequestorType.PROXY हुन्छ र जब अनुरोध गर्ने होस्ट र पोर्ट कन्फिगर गरिएको मध्यस्थसँग मिल्छ। असम्बन्धित चुनौतीहरूका लागि null फर्काउनुहोस्। यो वस्तु क्लाइन्टमा जोड्दा छनोट त्यही क्लाइन्टभित्र स्थानीय रहन्छ।
प्रोक्सीले के मागिरहेको छ पढ्नुहोस्
407 प्रतिक्रियाले प्रोक्सी प्रमाणीकरण चुनौती जनाउँछ। यसको Proxy-Authenticate हेडरले प्रस्ताव गरिएका योजनाहरू बताउँछ; स्थितिले मात्र Basic लाई NTLM वा अर्को योजनाबाट छुट्याउँदैन।
त्यो प्रस्तावलाई तैनाथ JDK क्लाइन्टको क्षमता र प्रमाणीकरण नीतिसँग भिडाउनुहोस्। प्रयोगकर्ता नाम र पासवर्ड दिनुले असमर्थित योजना थप्दैन। HTTPS गन्तव्यहरूका लागि JDK को jdk.http.auth.tunneling.disabledSchemes नीति पनि जाँच्नुहोस्; सामान्य HTTP प्रोक्सीमा छुट्टै disabledSchemes सेटिङ हुन्छ। CONNECT का लागि JDK का Basic प्रमाणीकरणका पूर्वनिर्धारित मानहरू त्यस्तै एक नीति जाँच हो।
Apache HttpClient र SimpleNTAuthenticator प्रयोग गर्ने ऐतिहासिक Jena उदाहरणहरू पुरानो transport पुस्ताका हुन्। यदि कर्पोरेट प्रोक्सीले वर्तमान transport मा उपलब्ध नहुने प्रमाणीकरण संयन्त्र माग्छ भने, ती पुराना प्रमाणीकरण वस्तुहरू आधुनिक बिल्डरमा कोच्ने प्रयास गर्नुको सट्टा नेटवर्क प्रशासकसँग समर्थित एकीकरण मिलाउनुहोस्।