Java-proxyhibák 407: ellenőrizze a CONNECT Basic-hitelesítését
Korlátozza a Java proxyadatait a proxyra, és ellenőrizze a JDK külön Basic-hitelesítési szabályzatát a HTTPS CONNECT-alagutakhoz.
Az ismételt 407 nem mindig jelenti, hogy a Java hibás jelszót küldött. A JDK referencia-megvalósítása rendszerint letiltja a Basic-hitelesítést HTTPS CONNECT-alagutakhoz. A csak Basicet kínáló proxy elutasítható még azelőtt, hogy a hitelesítési callback átadná az adatokat.
Korlátozza a hitelesítőadat-callback hatókörét
Csatoljon Authenticatort a Java HTTP-klienshez, és korlátozza a beállított proxyra:
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();
Ez egy kliens beállítókódja, nem globális alapértelmezett hitelesítő. Cserélje a dokumentációs címet, és ténylegesen az adott szolgáltatáshoz kiadott adatokat használja. A kérelmezőtípus és végpont ellenőrzése megakadályozza, hogy ugyanaz a callback könnyelműen felajánlja a proxyfiókot egy webhely hitelesítési felszólítására.
Ellenőrizze, melyik hitelesítési szakasz hibázik
A JDK külön letiltott-séma beállításokat használ a szokásos HTTP-proxyzáshoz és a CONNECT-alagutakhoz. A nevek jdk.http.auth.proxying.disabledSchemes és jdk.http.auth.tunneling.disabledSchemes.
Ezért sikerülhet a HTTP-forgalom hitelesítése, miközben a HTTPS-alagút ugyanazon proxyn hibázik. A futtatókörnyezet conf/net.properties fájlját és a telepítési szabályzatot ellenőrizze ahelyett, hogy másik gépen is ugyanazokat a tényleges alapértékeket feltételezné.
A letiltott sémák listájának globális ürítése nem általános proxyjavítás. A titkosítatlan HTTP-proxynak küldött Basic-adatokat nem védi a céllal később létrejövő TLS-kapcsolat. Változtatás jóváhagyása előtt vizsgálja a proxy átviteli módját, a hitelesítési módszert és a telepítési szabályzatot.
A JDK dokumentált beépített hitelesítési viselkedése sem ígéret a proxy által hirdetett összes séma támogatására. A kézzel megadott Authorization vagy Proxy-Authorization fejléc megváltoztatja az automatikus hitelesítő folyamatát, ezért ellenőrizze a saját fejléceket, ha a callback másként működik, mint a példában.