ການຢືນຢັນຕົວຕົນຜ່ານພຣັອກຊີສຳລັບລູກຄ້າ SPARQL ຂອງ Jena 4.3+
ເຊື່ອມຕໍ່ຕົວເລືອກ ແລະ ຕົວຢືນຢັນພຣັອກຊີເຂົ້າກັບລູກຄ້າ JDK HTTP ທີ່ການປະຕິບັດຄຳຖາມ Jena ສະໄໝໃໝ່ໃຊ້.
ສຳລັບສະແຕັກ 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 ປັດຈຸບັນ, ໃຫ້ຈັດການເຊື່ອມໂຍງທີ່ຮອງຮັບກັບຜູ້ດູແລເຄືອຂ່າຍ ແທນທີ່ຈະພະຍາຍາມຍັດວັດຖຸຢືນຢັນເກົ່າເຫຼົ່ານັ້ນເຂົ້າໃນຕົວສ້າງສະໄໝໃໝ່.