Untuk tumpukan HTTP Jena berbasis JDK, yang diperkenalkan pada Jena 4.3, konfigurasikan transport yang diteruskan ke pembangun kueri. Kata sandi titik akhir SPARQL dan kata sandi proxy dapat diminta oleh mesin yang berbeda.

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

Fragmen ini membangun eksekusi kueri. endpointUrl adalah URL layanan SPARQL yang sebenarnya; proxyAuthenticator adalah java.net.Authenticator yang disediakan aplikasi. Jalankan dan tutup eksekusi kueri melalui siklus hidup kueri normal aplikasi.

Dalam metode getPasswordAuthentication pengautentikasi itu, kembalikan PasswordAuthentication proxy hanya jika getRequestorType() == RequestorType.PROXY dan jika host serta port peminta cocok dengan perantara yang dikonfigurasi. Kembalikan null untuk tantangan yang tidak terkait. Melampirkan objek ini ke klien menjaga pilihan tetap lokal pada klien tersebut.

Baca apa yang diminta proxy

Respons 407 menandakan tantangan autentikasi proxy. Header Proxy-Authenticate memberi tahu skema yang ditawarkan; status saja tidak membedakan Basic dari NTLM atau skema lain.

Cocokkan tawaran itu dengan kemampuan dan kebijakan autentikasi klien JDK yang terpasang. Memberikan nama pengguna dan kata sandi tidak menambahkan skema yang tidak didukung. Untuk tujuan HTTPS, periksa juga kebijakan jdk.http.auth.tunneling.disabledSchemes milik JDK; proxy HTTP biasa memiliki pengaturan disabledSchemes terpisah. Nilai bawaan autentikasi Basic JDK untuk CONNECT adalah salah satu pemeriksaan kebijakan tersebut.

Contoh Jena historis dengan Apache HttpClient dan SimpleNTAuthenticator termasuk generasi transport yang lebih lama. Jika proxy korporat menuntut mekanisme autentikasi yang tidak tersedia pada transport saat ini, atur integrasi yang didukung dengan administrator jaringan alih-alih mencoba memaksakan objek autentikasi lama itu ke pembangun modern.

Artikel terkait