Java-Proxyfeeler 407: Basic-Authentifikatioun fir CONNECT kontrolléieren
Begrenzt Java-Zougangsdaten op de Proxy a kontrolléiert déi separat Basic-Authentifikatiounspolitik vum JDK fir HTTPS-CONNECT-Tunnellen.
E widderhuelte 407 bedeit net ëmmer, datt Java dat falscht Passwuert geschéckt huet. D'Referenzimplementatioun vum JDK deaktivéiert normalerweis Basic-Authentifikatioun fir HTTPS-CONNECT-Tunnellen. E Proxy, deen nëmme Basic ubitt, ka refuséiert ginn, éier Ären Authentifikatiounscallback Zougangsdaten liwwert.
De Beräich vum Callback fir Zougangsdaten begrenzen
Verbannt en Authenticator mam Java-HTTP-Client a begrenzt en op de konfiguréierte Proxy:
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();
Dëst ass Astellungscode fir e Client, kee globale Standardauthentifikator. Ersetzt d'Dokumentatiounsadress a benotzt Zougangsdaten, déi tatsächlech fir dee Service geliwwert goufen. D'Kontrolle vum Ufroertyp an dem Endpunkt verhënneren, datt dee selwechte Callback d'Proxykontodaten onbeduecht op eng Authentifikatiounsufro vun enger Websäit hi liwwert.
Kontrolléieren, wéi eng Authentifikatiounsphas feelgeschléit
De JDK huet separat Astellunge fir deaktivéiert Verfare bei normalem HTTP-Proxyverkéier a bei CONNECT-Tunnellen. Déi relevant Nimm sinn jdk.http.auth.proxying.disabledSchemes an jdk.http.auth.tunneling.disabledSchemes.
Dat erkläert, firwat HTTP-Verkéier sech authentifizéiere kann, wärend en HTTPS-Tunnel iwwer dee selwechte Proxy feelgeschléit. Kontrolléiert conf/net.properties vun der Lafzäit an d'Deploymentpolitik, amplaz unzehuelen, datt op enger anerer Maschinn déi selwecht effektiv Standardwäerter gëllen.
D'Lëscht vun deaktivéierte Verfare global ze läschen ass keng allgemeng Proxyreparatur. Basic-Zougangsdaten, déi un e Kloertext-HTTP-Proxy geschéckt ginn, sinn net duerch déi spéider TLS-Verbindung mam Zil geschützt. Iwwerpréift de Proxytransport, d'Authentifikatiounsmethod an d'Deploymentpolitik, éier Dir eng Ännerung approuvéiert.
Dat dokumentéiert agebautent Authentifikatiounsverhale vum JDK versprécht och net, all Verfaren ze ënnerstëtzen, dat e Proxy annoncéiert. E manuell gesaten Authorization- oder Proxy-Authorization-Header verännert den automateschen Authentifikatiounsoflaf. Kontrolléiert dofir personaliséiert Headeren, wann de Callback sech anescht verhält wéi am Beispill.