Preverjanje pristnosti prek proxyja za odjemalce SPARQL v Jena 4.3+
Povežite izbirnik in preverjevalnik proxyja s čakalnikom HTTP JDK, ki ga uporablja sodobno izvajanje poizvedb v Jeni.
Za sklad HTTP Jene, ki temelji na JDK in je bil uveden v Jena 4.3, nastavite transport, ki se preda graditelju poizvedb. Geslo končne točke SPARQL in geslo proxyja lahko zahtevajo različni računalniki.
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();Ta fragment zgradi izvajanje poizvedbe. endpointUrl je dejanski URL storitve SPARQL; proxyAuthenticator je java.net.Authenticator, ki ga zagotovi aplikacija. Zaženite in zaprite izvajanje poizvedbe skozi običajni življenjski cikel poizvedb v aplikaciji.
V metodi getPasswordAuthentication tega preverjevalnika vrnite PasswordAuthentication proxyja le, kadar velja getRequestorType() == RequestorType.PROXY in kadar se gostitelj in vrata, ki zahtevata, ujemata z nastavljenim posrednikom. Za nepovezane izzive vrnite null. Če ta objekt pritrdite na odjemalca, izbira ostane lokalna za tega odjemalca.
Preberite, kaj proxy zahteva
Odgovor 407 označuje izziv preverjanja pristnosti prek proxyja. Njegova glava Proxy-Authenticate navaja ponujene sheme; samo stanje ne loči Basic od NTLM ali druge sheme.
Primerjajte to ponudbo z zmogljivostmi nameščenega odjemalca JDK in njegovo politiko preverjanja pristnosti. Navedba uporabniškega imena in gesla ne doda nepodprte sheme. Za cilje HTTPS preverite tudi politiko JDK jdk.http.auth.tunneling.disabledSchemes; običajno posredovanje HTTP ima ločeno nastavitev disabledSchemes. Privzete vrednosti preverjanja Basic v JDK pri CONNECT so eno od takih preverjanj politike.
Zgodovinski primeri Jene z Apache HttpClient in SimpleNTAuthenticator spadajo v starejšo generacijo transporta. Če poslovni proxy zahteva mehanizem preverjanja pristnosti, ki v trenutnem transportu ni na voljo, dogovorite podprto integracijo z omrežnim skrbnikom, namesto da bi te stare objekte za preverjanje pristnosti poskušali vtisniti v sodobni graditelj.