Java проксиінің 407 қателері: CONNECT үшін Basic аутентификациясын тексеріңіз
Java тіркелгі деректерін тиісті проксимен шектеп, HTTPS CONNECT туннельдеріне арналған JDK-ның бөлек Basic аутентификация саясатын тексеріңіз.
Қайталанатын 407 әрдайым Java қате құпиясөз жіберді дегенді білдірмейді. JDK-ның эталондық іске асырылуы әдетте HTTPS CONNECT туннельдері үшін Basic аутентификациясын өшіреді. Тек Basic ұсынатын прокси аутентификацияның кері шақыруы тіркелгі деректерін бермей тұрып қабылданбауы мүмкін.
Тіркелгі деректерін беретін кері шақырудың аясын шектеңіз
Java HTTP клиентіне Authenticator тіркеп, оны бапталған проксимен шектеңіз:
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();
Бұл бір клиентті баптау коды, жаһандық әдепкі аутентификатор емес. Құжаттамалық мекенжайды ауыстырып, сол қызмет үшін шынымен берілген тіркелгі деректерін қолданыңыз. Сұраушы түрі мен соңғы нүктені тексеру сол кері шақырудың веб-сайттың аутентификация талабына прокси тіркелгісін ойланбастан ұсынуына жол бермейді.
Аутентификацияның қай кезеңі сәтсіз екенін тексеріңіз
JDK-да кәдімгі HTTP проксилік трафик пен CONNECT туннельдері үшін өшірілген схемалардың бөлек параметрлері бар. Тиісті атаулары — jdk.http.auth.proxying.disabledSchemes және jdk.http.auth.tunneling.disabledSchemes.
Бұл HTTP трафигінің аутентификациясы өтіп, сол прокси арқылы HTTPS туннелі неліктен сәтсіз болуы мүмкін екенін түсіндіреді. Басқа компьютерде де бірдей қолданыстағы әдепкі мәндер бар деп ойламай, орындау ортасының conf/net.properties файлы мен орналастыру саясатын тексеріңіз.
Өшірілген схемалар тізімін жаһандық тазарту проксиді түзетудің әмбебап жолы емес. Шифрланбаған HTTP проксиіне жіберілген Basic тіркелгі деректерін нысанамен кейін орнатылған TLS қосылымы қорғамайды. Өзгерісті мақұлдамас бұрын прокси тасымалын, аутентификация әдісін және орналастыру саясатын қараңыз.
JDK-ның кіріктірілген аутентификациясының құжатталған әрекеті де прокси жариялаған әр схеманы қолдауға уәде бермейді. Қолмен берілген Authorization немесе Proxy-Authorization тақырыбы автоматты аутентификатор ағынын өзгертеді, сондықтан кері шақыру үлгіден өзгеше әрекет етсе, арнайы тақырыптарды тексеріңіз.