สำหรับสแตก HTTP ของ Jena ที่อิง JDK ซึ่งนำมาใช้ใน Jena 4.3 ให้กำหนดค่า transport ที่ส่งให้ตัวสร้างคิวรี รหัสผ่านของปลายทาง SPARQL และรหัสผ่านของพร็อกซีอาจถูกขอจากเครื่องที่ต่างกัน

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

ส่วนนี้สร้างการดำเนินการคิวรี endpointUrl คือ URL จริงของบริการ SPARQL; proxyAuthenticator คือ java.net.Authenticator ที่แอปพลิเคชันจัดหาให้ เรียกใช้และปิดการดำเนินการคิวรีตามวงจรชีวิตคิวรีปกติของแอปพลิเคชัน

ในเมธอด getPasswordAuthentication ของตัวรับรองความถูกต้องนั้น ให้คืน PasswordAuthentication ของพร็อกซีเฉพาะเมื่อ getRequestorType() == RequestorType.PROXY และเมื่อโฮสต์และพอร์ตที่ร้องขอตรงกับตัวกลางที่กำหนดค่าไว้ คืน null สำหรับคำท้าที่ไม่เกี่ยวข้อง การแนบออบเจ็กต์นี้กับไคลเอนต์ทำให้การเลือกอยู่ภายในไคลเอนต์นั้น

อ่านสิ่งที่พร็อกซีร้องขอ

การตอบกลับ 407 บ่งชี้ถึงคำท้าการรับรองความถูกต้องผ่านพร็อกซี ส่วนหัว Proxy-Authenticate บอกสคีมาที่เสนอไว้ สถานะเพียงอย่างเดียวไม่สามารถแยก Basic ออกจาก NTLM หรือสคีมาอื่นได้

เทียบข้อเสนอนั้นกับความสามารถและนโยบายการรับรองความถูกต้องของไคลเอนต์ JDK ที่ติดตั้งไว้ การให้ชื่อผู้ใช้และรหัสผ่านไม่ได้เพิ่มสคีมาที่ไม่รองรับ สำหรับปลายทาง HTTPS ให้ตรวจสอบนโยบาย jdk.http.auth.tunneling.disabledSchemes ของ JDK ด้วย พร็อกซี HTTP ทั่วไปมีการตั้งค่า disabledSchemes แยกต่างหาก ค่าเริ่มต้นการรับรองความถูกต้องแบบ Basic ของ JDK สำหรับ CONNECT เป็นหนึ่งในการตรวจสอบนโยบายดังกล่าว

ตัวอย่าง Jena ในอดีตที่ใช้ Apache HttpClient และ SimpleNTAuthenticator เป็นของยุค transport รุ่นเก่า หากพร็อกซีองค์กรต้องการกลไกการรับรองความถูกต้องที่ไม่มีใน transport ปัจจุบัน ให้ตกลงการเชื่อมต่อที่รองรับกับผู้ดูแลเครือข่ายแทนการพยายามยัดออบเจ็กต์การรับรองความถูกต้องเก่าเหล่านั้นเข้าไปในตัวสร้างสมัยใหม่

บทความที่เกี่ยวข้อง