Ověřování přes proxy pro klienty SPARQL v Jena 4.3+
Připojte selektor a autentizátor proxy k HTTP klientovi JDK, který používá moderní provádění dotazů v Jeně.
Pro HTTP zásobník Jeny postavený na JDK, představený v Jena 4.3, nastavte transport předávaný tvůrci dotazu. Heslo koncového bodu SPARQL a heslo proxy mohou vyžadovat různé stroje.
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();Tento fragment sestaví provádění dotazu. endpointUrl je skutečná adresa služby SPARQL; proxyAuthenticator je java.net.Authenticator dodaný aplikací. Provádění dotazu spusťte a uzavřete v obvyklém životním cyklu dotazů aplikace.
V metodě getPasswordAuthentication tohoto autentizátoru vracejte PasswordAuthentication proxy jen tehdy, když platí getRequestorType() == RequestorType.PROXY a když se hostitel a port žadatele shodují s nakonfigurovaným prostředníkem. Pro nesouvisející výzvy vracejte null. Připojením tohoto objektu ke klientovi zůstává volba lokální pro daného klienta.
Přečtěte si, co proxy požaduje
Odpověď 407 označuje výzvu k ověření přes proxy. Jeho hlavička Proxy-Authenticate sděluje nabízené schémy; samotný stav nerozlišuje Basic od NTLM ani jiné schéma.
Porovnejte tuto nabídku s možnostmi nasazeného klienta JDK a jeho zásadami ověřování. Zadání uživatelského jména a hesla nepřidá nepodporovanou schému. Pro cíle HTTPS zkontrolujte také zásadu JDK jdk.http.auth.tunneling.disabledSchemes; běžné proxyování HTTP má samostatné nastavení disabledSchemes. Výchozí hodnoty ověřování Basic v JDK pro CONNECT jsou jednou z takových kontrol zásad.
Historické příklady Jeny s Apache HttpClient a SimpleNTAuthenticator patří starší generaci transportu. Pokud podniková proxy vyžaduje mechanismus ověřování, který v současném transportu není k dispozici, domluvte podporovanou integraci se správcem sítě, místo abyste se snažili ty staré objekty ověřování protlačit do moderního tvůrce.