Proxy autentifikācija Jena 4.3+ SPARQL klientiem
Pievienojiet starpniekservera atlasītāju un autentifikatoru JDK HTTP klientam, ko izmanto mūsdienīgā Jena vaicājumu izpilde.
Jena HTTP slānim, kas balstīts uz JDK un ieviests Jena 4.3 versijā, konfigurējiet transportu, kas tiek nodots vaicājuma veidotājam. SPARQL galapunkta paroli un starpniekservera paroli var pieprasīt dažādas mašīnas.
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();Šis fragments izveido vaicājuma izpildi. endpointUrl ir īstais SPARQL servisa URL; proxyAuthenticator ir lietotnes nodrošināts java.net.Authenticator. Palaidiet un aizveriet vaicājuma izpildi lietotnes parastajā vaicājumu dzīves ciklā.
Šī autentifikatora metodē getPasswordAuthentication atgrieziet starpniekservera PasswordAuthentication tikai tad, kad getRequestorType() == RequestorType.PROXY un kad pieprasošais resursdators un ports atbilst konfigurētajam starpniekam. Nesaistītiem izaicinājumiem atgrieziet null. Šī objekta piesaiste klientam patur izvēli lokālu šim klientam.
Izlasi, ko pieprasa starpniekserveris
407 atbilde norāda starpniekservera autentifikācijas izaicinājumu. Tās galvene Proxy-Authenticate vēsta piedāvātās shēmas; tikai statuss neatšķir Basic no NTLM vai citas shēmas.
Salīdziniet šo piedāvājumu ar izvietotā JDK klienta iespējām un autentifikācijas politiku. Lietotājvārda un paroles nodrošināšana nepievieno neatbalstītu shēmu. HTTPS mērķiem pārbaudiet arī JDK politiku jdk.http.auth.tunneling.disabledSchemes; parastajam HTTP starpniekserverim ir atsevišķs disabledSchemes iestatījums. JDK Basic autentifikācijas noklusējumi CONNECT gadījumā ir viens no šādiem politikas pārbaudes punktiem.
Vēsturiskie Jena piemēri ar Apache HttpClient un SimpleNTAuthenticator pieder vecākai transporta paaudzei. Ja uzņēmuma starpniekserveris prasa autentifikācijas mehānismu, kas pašreizējā transportā nav pieejams, vienojieties par atbalstītu integrāciju ar tīkla administratoru, nevis mēģiniet šos vecos autentifikācijas objektus iebāzt mūsdienīgajā veidotājā.