Για τη στοίβα 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. Οι προεπιλογές του JDK για έλεγχο ταυτότητας Basic στο CONNECT είναι ένας τέτοιος έλεγχος πολιτικής.

Τα ιστορικά παραδείγματα του Jena με Apache HttpClient και SimpleNTAuthenticator ανήκουν σε παλαιότερη γενιά transport. Αν ο εταιρικός διαμεσολαβητής απαιτεί μηχανισμό ελέγχου ταυτότητας που δεν υπάρχει στο τρέχον transport, κανονίστε υποστηριζόμενη ενσωμάτωση με τον διαχειριστή δικτύου αντί να προσπαθείτε να περάσετε εκείνα τα παλιά αντικείμενα στον σύγχρονο κατασκευαστή.

Σχετικά άρθρα