Proxy-autentisering til Jena 4.3+ SPARQL-klientar
Set ein proxyveljar og ein autentiserar på JDK HTTP-klienten som moderne Jena-spørjing utført av brukar.
Fyri Jena sin JDK-baserte HTTP-stakk, innførd i Jena 4.3, set du opp transporten som vert gjeven til spørjebyggjaren. Eit passord til SPARQL-endepunktet og eit passord til proxyen kan verta spurde etter av ulike maskinar.
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();Utdraget byggjer ei spørjing. endpointUrl er den faktiske URL-en til SPARQL-tenesta; proxyAuthenticator er ein java.net.Authenticator som programmet legg fram. Køyr og lat att spørjinga gjennom den vanlege livssyklusen til programmet.
I getPasswordAuthentication-metoden til autentiseraren returnerer du PasswordAuthentication til proxyen berre når getRequestorType() == RequestorType.PROXY og når verten og porten som spør passar med den oppsette mellommannen. Returner null for urelaterte utfordringar. Når objektet vert knytt til klienten, held valet seg lokalt i den klienten.
Les kva proxyen ber om
Eit 407-svar viser til ei proxy-autentiseringsutfordring. Proxy-Authenticate-hovudet fortel kva skjema som vert bodne; statusen aleine skil ikkje Basic frå NTLM eller eit anna skjema.
Samanlikn tilbodet med evnene og autentiseringspolitikken til JDK-klienten som er sett i drift. Å gje brukarnamn og passord legg ikkje til eit skjema som ikkje er støtta. For HTTPS-mål må du òg granske jdk.http.auth.tunneling.disabledSchemes-politikken til JDK; vanleg HTTP-proxy har ei eiga disabledSchemes-innstilling. Standardverdiane til JDK for Basic-autentisering ved CONNECT er ein slik politikksjekk.
Historiske Jena-døme med Apache HttpClient og SimpleNTAuthenticator høyrer til ei eldre transportgenerasjon. Viss føretaksproxyen krev ein autentiseringsmekanisme som ikkje finst i den noverande transporten, avtalar du ei støtta integrering med nettverksadministratoren i staden for å prøve å tvinge dei gamle autentiseringsobjekta inn i den moderne byggjaren.