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 मध्ये उपलब्ध नसलेल्या प्रमाणीकरण पद्धतीची मागणी करत असेल, तर त्या जुन्या प्रमाणीकरण ऑब्जेक्ट्सना आधुनिक बिल्डरमध्ये कोंबण्याचा प्रयत्न करण्याऐवजी नेटवर्क प्रशासकासोबत समर्थित एकत्रीकरण ठरवा.