Määritä Jena 4.3:ssa esitellylle JDK-pohjaiselle Jena HTTP -pinolle siirto, joka välitetään kyselyn rakentajalle. SPARQL-päätepisteen salasana ja välityspalvelimen salasana voivat tulla eri koneilta.

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

Katkelma rakentaa kyselyn suorituksen. endpointUrl on SPARQL-palvelun todellinen URL-osoite; proxyAuthenticator on sovelluksen tarjoama java.net.Authenticator. Suorita ja sulje kyselyn suoritus sovelluksen tavallisen kyselyelinkaaren mukaisesti.

Palauta kyseisen todennuksen getPasswordAuthentication-metodissa välityspalvelimen PasswordAuthentication vain silloin, kun getRequestorType() == RequestorType.PROXY ja kun pyytävä isäntä ja portti vastaavat määritettyä välittäjää. Palauta null muihin liittymättömiin haasteisiin. Kun olio liitetään asiakkaaseen, valinta pysyy kyseisen asiakkaan paikallisena.

Lue, mitä välityspalvelin pyytää

407-vastaus osoittaa välityspalvelimen todennushaasteen. Sen Proxy-Authenticate-otsake kertoo tarjotut menetelmät; pelkkä tila ei erota Basic-menetelmää NTLM:stä tai muusta menetelmästä.

Vertaa tarjousta käyttöönotetun JDK-asiakkaan ominaisuuksiin ja todennuskäytäntöön. Käyttäjänimen ja salasanan antaminen ei lisää tukematonta menetelmää. HTTPS-kohteille tarkista myös JDK:n jdk.http.auth.tunneling.disabledSchemes-käytäntö; tavallisella HTTP-välityksellä on erillinen disabledSchemes-asetus. JDK:n Basic-todennuksen oletukset CONNECT-yhteyksille on yksi tällainen käytäntötarkistus.

Historialliset Jena-esimerkit Apache HttpClientillä ja SimpleNTAuthenticatorilla kuuluvat vanhempaan siirtosukupolveen. Jos yrityksen välityspalvelin vaatii todennusmekanismia, jota nykyisessä siirrossa ei ole, sovi tuettu integraatio verkkoylläpitäjän kanssa sen sijaan, että yrittäisit sovittaa noita vanhoja todennusolioita nykyaikaiseen rakentajaan.

Aiheeseen liittyvät artikkelit