Pengesahan proksi untuk klien SPARQL Jena 4.3+
Lampirkan pemilih dan pengesah proksi pada klien HTTP JDK yang digunakan oleh pelaksanaan pertanyaan Jena moden.
Untuk tindanan HTTP Jena berasaskan JDK, yang diperkenalkan dalam Jena 4.3, konfigurasikan transport yang dihantar kepada pembina pertanyaan. Kata laluan titik akhir SPARQL dan kata laluan proksi boleh diminta oleh mesin yang berbeza.
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();Serpihan ini membina pelaksanaan pertanyaan. endpointUrl ialah URL sebenar perkhidmatan SPARQL; proxyAuthenticator ialah java.net.Authenticator yang disediakan aplikasi. Jalankan dan tutup pelaksanaan pertanyaan melalui kitaran hayat pertanyaan biasa aplikasi.
Dalam kaedah getPasswordAuthentication pengesah itu, kembalikan PasswordAuthentication proksi hanya apabila getRequestorType() == RequestorType.PROXY dan apabila hos serta port peminta sepadan dengan perantara yang dikonfigurasikan. Kembalikan null untuk cabaran yang tidak berkaitan. Melampirkan objek ini pada klien mengekalkan pilihan itu setempat pada klien tersebut.
Baca apa yang diminta proksi
Respons 407 menandakan cabaran pengesahan proksi. Pengepala Proxy-Authenticate memberitahu skema yang ditawarkan; status sahaja tidak membezakan Basic daripada NTLM atau skema lain.
Padankan tawaran itu dengan keupayaan dan dasar pengesahan klien JDK yang digunakan. Memberi nama pengguna dan kata laluan tidak menambah skema yang tidak disokong. Untuk destinasi HTTPS, periksa juga dasar jdk.http.auth.tunneling.disabledSchemes JDK; proksi HTTP biasa mempunyai tetapan disabledSchemes yang berasingan. Nilai lalai pengesahan Basic JDK untuk CONNECT ialah salah satu semakan dasar tersebut.
Contoh Jena sejarah yang menggunakan Apache HttpClient dan SimpleNTAuthenticator tergolong dalam generasi transport yang lebih lama. Jika proksi korporat memerlukan mekanisme pengesahan yang tiada dalam transport semasa, aturkan integrasi yang disokong dengan pentadbir rangkaian dan bukannya cuba memasukkan objek pengesahan lama itu ke dalam pembina moden.