Java puhverserveri 407 vead: kontrolli CONNECT-i Basic-autentimist
Piira Java puhverserveri tunnused puhverserveriga ja kontrolli JDK eraldi Basic-autentimise poliitikat HTTPS CONNECT-tunnelitele.
Korduv 407 ei tähenda alati, et Java saatis vale parooli. JDK viiteteostus keelab tavaliselt HTTPS CONNECT-tunnelite Basic-autentimise. Ainult Basicut pakkuv puhverserver võidakse tagasi lükata enne, kui autentimise tagasikutse tunnused annab.
Piira tunnuste tagasikutse ulatust
Lisa Authenticator Java HTTP-kliendile ja piira see seadistatud puhverserveriga:
String proxyHost = "203.0.113.10";
int proxyPort = 8080;
String password = System.getenv("PROXY_PASSWORD");
if (password == null) {
throw new IllegalStateException("Set PROXY_PASSWORD");
}
java.net.Authenticator auth = new java.net.Authenticator() {
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication() {
if (getRequestorType() == RequestorType.PROXY
&& proxyHost.equals(getRequestingHost())
&& proxyPort == getRequestingPort()) {
return new java.net.PasswordAuthentication(
"proxy-user", password.toCharArray());
}
return null;
}
};
java.net.http.HttpClient client = java.net.http.HttpClient.newBuilder()
.proxy(java.net.ProxySelector.of(
new java.net.InetSocketAddress(proxyHost, proxyPort)))
.authenticator(auth)
.connectTimeout(java.time.Duration.ofSeconds(5))
.build();
See on kliendi seadistuskood, mitte globaalne vaikeautentija. Asenda dokumentatsiooni aadress ja kasuta päriselt selle teenuse jaoks antud tunnuseid. Pärija tüübi ning lõpp-punkti kontrollid takistavad samal tagasikutsel puhverserverikontot kergekäeliselt veebisaidi autentimispäringule pakkumast.
Kontrolli, milline autentimisaste ebaõnnestub
JDK-l on tavalise HTTP-puhverserveri ja CONNECT-tunnelite jaoks eraldi keelatud skeemide seaded. Nimed on jdk.http.auth.proxying.disabledSchemes ja jdk.http.auth.tunneling.disabledSchemes.
See selgitab, miks HTTP-liiklus võib autentida, samal ajal kui HTTPS-tunnel läbi sama puhverserveri nurjub. Kontrolli käituskeskkonna conf/net.properties faili ja juurutuspoliitikat, mitte ära eelda teises masinas samu tegelikke vaikeväärtusi.
Keelatud skeemide loendi globaalne tühjendamine ei ole üldine puhverserveriparandus. Krüpteerimata HTTP-puhverserverile saadetud Basic-tunnuseid ei kaitse hilisem TLS-ühendus sihtkohaga. Enne muudatuse kinnitamist vaata üle puhverserveri transport, autentimismeetod ja juurutuspoliitika.
JDK dokumenteeritud sisseehitatud autentimiskäitumine ei luba samuti toetada iga puhverserveri reklaamitud skeemi. Käsitsi lisatud Authorization või Proxy-Authorization päis muudab automaatse autentija voogu, seega kontrolli oma päiseid, kui tagasikutse erineb näitest.