For Jena's JDK-baserede HTTP-stak, introduceret i Jena 4.3, konfigurerer du den transport, der gives til forespørgselsbyggeren. En adgangskode til SPARQL-endpointet og en adgangskode til proxyen kan blive efterspurgt af forskellige maskiner.

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();

Uddraget bygger en forespørgselsafvikling. endpointUrl er den faktiske URL for SPARQL-tjenesten; proxyAuthenticator er en java.net.Authenticator, som applikationen leverer. Kør og luk forespørgselsafviklingen via applikationens normale livscyklus for forespørgsler.

I den godkenders getPasswordAuthentication-metode returnerer du kun proxyens PasswordAuthentication, når getRequestorType() == RequestorType.PROXY og når den anmodende vært og port matcher den konfigurerede mellemmand. Returner null for urelaterede udfordringer. Når objektet knyttes til klienten, forbliver valget lokalt for den klient.

Læs, hvad proxyen beder om

Et 407-svar angiver en proxygodkendelsesudfordring. Dets Proxy-Authenticate-header fortæller, hvilke skemaer der tilbydes; status alene skelner ikke Basic fra NTLM eller et andet skema.

Sammenlign tilbuddet med den udrullede JDK-klients muligheder og godkendelsespolitik. At angive brugernavn og adgangskode tilføjer ikke et ikke-understøttet skema. For HTTPS-destinationer skal du også undersøge JDK'ets jdk.http.auth.tunneling.disabledSchemes-politik; almindelig HTTP-proxy har en separat disabledSchemes-indstilling. JDK'ets standarder for Basic-godkendelse ved CONNECT er et sådant politikcheck.

Historiske Jena-eksempler med Apache HttpClient og SimpleNTAuthenticator hører til en ældre transportgeneration. Hvis virksomhedsproxyen kræver en godkendelsesmekanisme, som ikke findes i den nuværende transport, skal du aftale en understøttet integration med netværksadministratoren i stedet for at forsøge at presse de gamle godkendelsesobjekter ind i den moderne bygger.

Relaterede artikler