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 ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲದ ದೃಢೀಕರಣ ವಿಧಾನ ಬೇಕಿದ್ದರೆ, ಆ ಹಳೆಯ ದೃಢೀಕರಣ ವಸ್ತುಗಳನ್ನು ಆಧುನಿಕ ನಿರ್ಮಾಣಕಾರಕ್ಕೆ ತುರುಕಿಸಲು ಪ್ರಯತ್ನಿಸುವ ಬದಲು ಜಾಲ ನಿರ್ವಾಹಕರೊಂದಿಗೆ ಬೆಂಬಲಿತ ಸಂಯೋಜನೆ ಏರ್ಪಡಿಸಿ.