Վստահարման հաստատում վստահված սերվերի միջոցով Jena 4.3+ SPARQL հաճախորդների համար
Կցեք վստահված սերվերի ընտրիչ և հաստատիչ JDK HTTP հաճախորդին, որն օգտագործում է Jena-ի ժամանակակից հարցումների կատարումը։
Jena-ի JDK-ի վրա հիմնված HTTP շերտի համար, որը ներկայացվել է 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-ը SPARQL ծառայության իրական URL-ն է. proxyAuthenticator-ը հավելվածի կողմից տրամադրվող java.net.Authenticator է։ Գործարկեք և փակեք հարցումների կատարումը հավելվածի սովորական հարցումների կյանքի ցիկլով։
Այդ հաստատիչի getPasswordAuthentication մեթոդում վերադարձրեք վստահված սերվերի PasswordAuthentication-ը միայն այն դեպքում, երբ getRequestorType() == RequestorType.PROXY է և երբ հարցում ուղարկող հոսթը և պորտը համապատասխանում են կարգավորված միջնորդին։ Անկապ մարտահրավերների համար վերադարձրեք null։ Այս օբյեկտը հաճախորդին կցելը ընտրությունը պահում է տեղային այդ հաճախորդի համար։
Կարդացեք, թե ինչ է պահանջում վստահված սերվերը
407 պատասխանը նշում է վստահված սերվերի հաստատման մարտահրավեր։ Նրա Proxy-Authenticate վերնագիրը հայտնում է առաջարկվող սխեմաները. միայն կարգավիճակը չի տարբերում Basic-ը NTLM-ից կամ այլ սխեմայից։
Համեմատեք այդ առաջարկը տեղակայված JDK հաճախորդի հնարավորությունների և հաստատման քաղաքականության հետ։ Օգտանուն և գաղտնաբառ տրամադրելը չի ավելացնում չաջակցվող սխեմա։ HTTPS նպատակների համար ստուգեք նաև JDK-ի jdk.http.auth.tunneling.disabledSchemes քաղաքականությունը. սովորական HTTP վստահված սերվերն ունի առանձին disabledSchemes կարգավորում։ CONNECT-ի համար JDK-ի Basic հաստատման կանխադրվածները նման քաղաքականության ստուգումներից մեկն են։
Apache HttpClient և SimpleNTAuthenticator օգտագործող Jena-ի պատմական օրինակները պատկանում են ավելի հին transport սերնդի։ Եթե կորպորատիվ վստահված սերվերը պահանջում է հաստատման մեխանիզմ, որը հասանելի չէ ընթացիկ transport-ում, պայմանավորվեք աջակցվող ինտեգրացիա ցանցի ադմինիստրատորի հետ՝ փոխարենը փորձելով այդ հին հաստատման օբյեկտները մղել ժամանակակից կառուցողի մեջ։