Jena 4.3 нұсқасында ұсынылған Jena-ның JDK негізіндегі HTTP қабаты үшін сұрау құрастырушыға берілетін 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-та қолжетімсіз аутентификация механизмін талап етсе, сол ескі аутентификация нысандарын заманауи құрастырушыға күштеп тығуға тырысудың орнына желі әкімшісімен қолдау көрсетілетін интеграцияны келісіңіз.

Қатысты мақалалар