Autentificare prin proxy pentru clienții SPARQL din Jena 4.3+
Atașați un selector și un autentificator de proxy la clientul HTTP al JDK folosit de execuția modernă a interogărilor Jena.
Pentru stiva HTTP a Jenei bazată pe JDK, introdusă în Jena 4.3, configurați transportul transmis constructorului de interogări. O parolă a punctului final SPARQL și o parolă a proxy-ului pot fi cerute de mașini diferite.
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();Fragmentul construiește o execuție de interogare. endpointUrl este URL-ul real al serviciului SPARQL; proxyAuthenticator este un java.net.Authenticator furnizat de aplicație. Rulați și închideți execuția interogării prin ciclul de viață obișnuit al interogărilor din aplicație.
În metoda getPasswordAuthentication a acelui autentificator, returnați PasswordAuthentication al proxy-ului numai când getRequestorType() == RequestorType.PROXY și când gazda și portul care solicită corespund intermediarului configurat. Returnați null pentru provocările nelegate. Atașarea acestui obiect la client păstrează alegerea locală la acel client.
Citiți ce cere proxy-ul
Un răspuns 407 indică o provocare de autentificare prin proxy. Antetul său Proxy-Authenticate spune ce scheme sunt oferite; doar starea nu distinge Basic de NTLM sau de altă schemă.
Comparați acea ofertă cu capacitățile și politica de autentificare ale clientului JDK implementat. Furnizarea unui nume de utilizator și a unei parole nu adaugă o schemă neacceptată. Pentru destinații HTTPS, examinați și politica jdk.http.auth.tunneling.disabledSchemes a JDK; proxy-ul HTTP obișnuit are o setare disabledSchemes separată. Valorile implicite ale JDK pentru autentificarea Basic la CONNECT sunt una dintre aceste verificări de politică.
Exemplele istorice Jena cu Apache HttpClient și SimpleNTAuthenticator aparțin unei generații de transport mai vechi. Dacă proxy-ul corporativ cere un mecanism de autentificare indisponibil în transportul actual, conveniți o integrare acceptată cu administratorul de rețea în loc să încercați să împingeți acele obiecte vechi de autentificare în constructorul modern.