For Jenas JDK-baserte HTTP-stakk, innført i Jena 4.3, konfigurerer du transporten som gis til spørringsbyggeren. Et passord for SPARQL-endepunktet og et passord for proxyen kan bli etterspurt av forskjellige 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();

Utdraget bygger en spørringskjøring. endpointUrl er den faktiske URL-en til SPARQL-tjenesten; proxyAuthenticator er en java.net.Authenticator som applikasjonen leverer. Kjør og lukk spørringskjøringen gjennom applikasjonens vanlige livssyklus for spørringer.

I autentisererens getPasswordAuthentication-metode returnerer du proxyens PasswordAuthentication bare når getRequestorType() == RequestorType.PROXY og når verten og porten som spør samsvarer med den konfigurerte mellommannen. Returner null for urelaterte utfordringer. Når objektet knyttes til klienten, holder valget seg lokalt for den klienten.

Les hva proxyen ber om

Et 407-svar viser til en proxyautentiseringsutfordring. Proxy-Authenticate-headeren forteller hvilke skjemaer som tilbys; statusen alene skiller ikke Basic fra NTLM eller et annet skjema.

Sammenlign tilbudet med egenskapene og autentiseringspolicyen til JDK-klienten som er satt i drift. Å oppgi brukernavn og passord legger ikke til et skjema som ikke støttes. For HTTPS-mål må du også undersøke jdk.http.auth.tunneling.disabledSchemes-policyen til JDK; vanlig HTTP-proxy har en egen disabledSchemes-innstilling. Jenas standardverdier for Basic-autentisering ved CONNECT er en slik policysjekk.

Historiske Jena-eksempler med Apache HttpClient og SimpleNTAuthenticator tilhører en eldre transportgenerasjon. Hvis bedriftsproxyen krever en autentiseringsmekanisme som ikke finnes i dagens transport, avtal en støttet integrasjon med nettverksadministratoren i stedet for å prøve å presse de gamle autentiseringsobjektene inn i den moderne byggeren.

Relaterte artikler