Autentifikacija preko proxyja za Jena 4.3+ SPARQL klijente
Priključite birač i autentifikator proxyja na JDK HTTP klijent koji koristi savremeno izvršavanje upita u Jeni.
Za HTTP stek Jene zasnovan na JDK-u, uveden u Jena 4.3, podesite transport koji se predaje graditelju upita. Lozinku za SPARQL krajnju tačku i lozinku za proxy mogu tražiti različite mašine.
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();Ovaj fragment gradi izvršavanje upita. endpointUrl je stvarni URL SPARQL servisa; proxyAuthenticator je java.net.Authenticator koji obezbeđuje aplikacija. Pokrenite i zatvorite izvršavanje upita kroz uobičajeni životni ciklus upita u aplikaciji.
U metodi getPasswordAuthentication tog autentifikatora vratite PasswordAuthentication proxyja samo kada getRequestorType() == RequestorType.PROXY i kada se host i port koji šalju zahtev poklapaju sa konfigurisanim posrednikom. Za nepovezane izazove vratite null. Priključivanje ovog objekta klijentu zadržava izbor lokalnim za taj klijent.
Pročitajte šta proxy traži
Odgovor 407 označava izazov autentifikacije na proxyju. Njegov zaglavlje Proxy-Authenticate govori koje se šeme nude; sam status ne razlikuje Basic od NTLM-a ili neke druge šeme.
Uporedite tu ponudu sa mogućnostima instaliranog JDK klijenta i njegovom politikom autentifikacije. Davanje korisničkog imena i lozinke ne dodaje nepodržanu šemu. Za HTTPS odredišta proverite i JDK politiku jdk.http.auth.tunneling.disabledSchemes; obično HTTP posredovanje ima zasebno podešavanje disabledSchemes. Podrazumevane vrednosti JDK-a za Basic autentifikaciju pri CONNECT-u jedna su takva provera politike.
Istorijski Jena primeri sa Apache HttpClient i SimpleNTAuthenticator pripadaju starijoj generaciji transporta. Ako korporativni proxy zahteva mehanizam autentifikacije koji nije dostupan u trenutnom transportu, dogovorite podržanu integraciju sa mrežnim administratorom umesto da te stare objekte za autentifikaciju pokušavate da ugurate u moderni graditelj.