Jena 4.3+ SPARQL istemcileri için proxy kimlik doğrulaması
Modern Jena sorgu yürütmesinin kullandığı JDK HTTP istemcisine bir proxy seçici ve kimlik doğrulayıcı bağlayın.
Jena 4.3'te tanıtılan JDK tabanlı Jena HTTP yığını için sorgu oluşturucusuna verilen transportu yapılandırın. SPARQL uç noktasının parolası ile proxy parolası farklı makineler tarafından istenebilir.
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();Bu parça bir sorgu yürütmesi oluşturur. endpointUrl gerçek SPARQL hizmeti URL'sidir; proxyAuthenticator uygulamanın sağladığı bir java.net.Authenticator'dır. Sorgu yürütmesini uygulamanın normal sorgu yaşam döngüsüyle çalıştırın ve kapatın.
Bu kimlik doğrulayıcının getPasswordAuthentication yönteminde, proxy'nin PasswordAuthentication nesnesini yalnızca getRequestorType() == RequestorType.PROXY olduğunda ve istekte bulunan ana bilgisayar ile bağlantı noktası yapılandırılmış aracıyla eşleştiğinde döndürün. İlgisiz meydan okumalar için null döndürün. Bu nesneyi istemciye bağlamak, seçimi o istemcinin içinde tutar.
Proxy'nin ne istediğini okuyun
407 yanıtı bir proxy kimlik doğrulama meydan okumasını gösterir. Proxy-Authenticate başlığı sunulan şemaları bildirir; durum tek başına Basic'i NTLM'den veya başka bir şemadan ayırmaz.
Bu teklifi dağıtılmış JDK istemcisinin yetenekleri ve kimlik doğrulama politikasıyla karşılaştırın. Kullanıcı adı ve parola vermek desteklenmeyen bir şema eklemez. HTTPS hedefleri için JDK'nın jdk.http.auth.tunneling.disabledSchemes politikasını da inceleyin; sıradan HTTP proxy'sinin ayrı bir disabledSchemes ayarı vardır. CONNECT için JDK'nın Basic kimlik doğrulama varsayılanları bu tür politika denetimlerinden biridir.
Apache HttpClient ve SimpleNTAuthenticator kullanan tarihsel Jena örnekleri daha eski bir transport kuşağına aittir. Kurumsal proxy mevcut transportta bulunmayan bir kimlik doğrulama mekanizması gerektiriyorsa, o eski kimlik doğrulama nesnelerini modern oluşturucuya zorla sokmaya çalışmak yerine ağ yöneticisiyle desteklenen bir tümleştirme kararlaştırın.