احراز هویت پروکسی برای کلاینتهای SPARQL در Jena 4.3+
یک انتخابگر و احرازکننده پروکسی به کلاینت HTTP مربوط به JDK که اجرای پرسوجوی مدرن Jena از آن استفاده میکند متصل کنید.
برای پشته HTTP مبتنی بر JDK در Jena که از Jena 4.3 معرفی شد، انتقالی را که به سازنده پرسوجو داده میشود پیکربندی کنید. گذرواژه نقطه پایانی 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 نشانی واقعی سرویس 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 به نسل قدیمیتر انتقال تعلق دارند. اگر پروکسی شرکتی سازوکار احراز هویتی بخواهد که در انتقال کنونی در دسترس نیست، بهجای تلاش برای گنجاندن آن اشیای احراز هویت قدیمی در سازنده مدرن، یکپارچهسازی پشتیبانیشدهای با مدیر شبکه ترتیب دهید.