Proxy autentifikacija za Jena 4.3+ SPARQL klijente
Priključite birač proxyja i autentifikator na JDK HTTP klijent koji koristi savremeno izvršavanje upita u Jeni.
Za Jenu HTTP stek 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 daje 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 zahtjev poklapaju s podešenim 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 ili neke druge šeme.
Uporedite tu ponudu s mogućnostima instaliranog JDK klijenta i njegovom politikom autentifikacije. Davanje korisničkog imena i lozinke ne dodaje nepodržanu šemu. Za HTTPS odredišta provjerite i JDK politiku jdk.http.auth.tunneling.disabledSchemes; obično HTTP posredovanje ima zasebno podešavanje disabledSchemes. Zadani podaci JDK-a za Basic autentifikaciju pri CONNECT jedna su takva provjera politike.
Istorijski Jena primjeri s Apache HttpClient i SimpleNTAuthenticator pripadaju starijoj generaciji transporta. Ako korporativni proxy zahtijeva mehanizam autentifikacije koji nije dostupan u trenutnom transportu, organizujte podržanu integraciju s mrežnim administratorom umjesto da te stare objekte za autentifikaciju pokušavate ubaciti u moderni graditelj.