Proxy-Authentifikatioun fir Jena 4.3+ SPARQL-Clients
Verbannt e Proxy-Selektor an en Authenticator mam JDK HTTP-Client, deen déi modern Jena-Query-Ausféierung benotzt.
Fir den JDK-baséierte HTTP-Stack vum Jena, dee mat Jena 4.3 agefouert gouf, konfiguréiert den Transport, deen un de Query-Builder iwwergi gëtt. D'Passwuert vum SPARQL-Endpunkt an d'Passwuert vum Proxy kënne vu verschiddene Maschinne gefrot ginn.
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();De Fragment baut eng Query-Ausféierung. endpointUrl ass déi tatsächlech URL vum SPARQL-Service; proxyAuthenticator ass en java.net.Authenticator, deen d'Applikatioun bereetstellt. Féiert d'Query-Ausféierung aus a schléisst se iwwer den normale Query-Liewenszyklus vun der Applikatioun.
An der Method getPasswordAuthentication vun deem Authenticator gitt Dir d'PasswordAuthentication vum Proxy nëmmen zréck, wann getRequestorType() == RequestorType.PROXY a wann de Host an de Port, déi ufroen, mam konfiguréierte Vermëttler iwwerenee stëmmen. Gitt null zréck fir onbezunn Erausfuerderungen. Wann dëst Objet un de Client gebonne gëtt, bleift d'Wiel lokal fir dee Client.
Liest, wat de Proxy freet
Eng 407-Antwert weist op eng Proxy-Authentifikatiouns-Erausfuerderung hin. Säin Proxy-Authenticate-Header seet, wéi eng Schemaen ugebuede ginn; de Status eleng ënnerscheet Basic net vun NTLM oder engem anere Schema.
Vergläicht dëst Ubued mam Kënnen an der Authentifikatiounspolitik vum installéierte JDK-Client. Benotzernumm a Passwuert ze liwweren, füügt kee net ënnerstëtzte Schema derbäi. Fir HTTPS-Ziler iwwerpréift och d'Politik jdk.http.auth.tunneling.disabledSchemes vum JDK; normale HTTP-Proxy huet eng separat disabledSchemes-Astellung. D'Standardwäerter vum JDK fir Basic-Authentifikatioun bei CONNECT sinn eng sou eng Politikpréifung.
Historesch Jena-Beispiller mat Apache HttpClient a SimpleNTAuthenticator gehéieren zu enger eelerer Transportgeneratioun. Wann de Firmeproxy en Authentifikatiounsmechanismus verlaangt, deen am aktuellen Transport net disponibel ass, arrangéiert eng ënnerstëtzte Integratioun mam Netzwierkadministrator, amplaz ze probéieren déi al Authentifikatiounsobjeten an den moderne Builder ze zwéngen.