Java proksi 407 xətaları: CONNECT üçün Basic autentifikasiyasını yoxlayın
Java proksi giriş məlumatlarını yalnız proksiyə məhdudlaşdırın və JDK-nın HTTPS CONNECT tunelləri üçün ayrıca Basic autentifikasiya siyasətini yoxlayın.
Təkrarlanan 407 həmişə Java-nın yanlış parol göndərdiyini bildirmir. JDK istinad reallaşdırması adətən HTTPS CONNECT tunelləri üçün Basic autentifikasiyasını söndürür. Yalnız Basic təklif edən proksi autentifikasiya geri çağırışınız giriş məlumatı verməzdən əvvəl rədd edilə bilər.
Giriş məlumatı geri çağırışının əhatəsini məhdudlaşdırın
Java HTTP müştərisinə Authenticator qoşun və onu konfiqurasiya edilmiş proksiyə məhdudlaşdırın:
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();
Bu, müştəri qurulması kodudur, qlobal standart autentifikator deyil. Sənədləşdirmə ünvanını dəyişin və həmin xidmət üçün həqiqətən verilmiş məlumatları istifadə edin. Sorğulayanın tipi və son nöqtə yoxlamaları eyni geri çağırışın proksi hesabını saytın autentifikasiya tələbinə düşünmədən verməsinin qarşısını alır.
Hansı autentifikasiya mərhələsinin uğursuz olduğunu yoxlayın
JDK adi HTTP proksiləməsi və CONNECT tunelləri üçün ayrıca söndürülmüş sxem parametrlərinə malikdir. Müvafiq adlar jdk.http.auth.proxying.disabledSchemes və jdk.http.auth.tunneling.disabledSchemes-dir.
Bu, HTTP trafiki autentifikasiya olunarkən eyni proksidən HTTPS tunelinin niyə uğursuz ola bildiyini izah edir. Başqa maşında eyni qüvvədə olan standartları fərz etmək əvəzinə icra mühitinin conf/net.properties faylını və yerləşdirmə siyasətini yoxlayın.
Söndürülmüş sxem siyahısını qlobal təmizləmək ümumi proksi təmiri deyil. Açıq mətnli HTTP proksisinə göndərilən Basic məlumatlarını hədəfin sonrakı TLS bağlantısı qorumur. Dəyişikliyi təsdiqləməzdən əvvəl proksi nəqliyyatını, autentifikasiya üsulunu və yerləşdirmə siyasətini nəzərdən keçirin.
JDK-nın sənədləşdirilmiş daxili autentifikasiya davranışı proksinin elan etdiyi hər sxemi dəstəkləmək vədi də deyil. Əl ilə verilən Authorization və ya Proxy-Authorization başlığı avtomatik autentifikator axınını dəyişir; geri çağırış nümunədən fərqlənəndə xüsusi başlıqları yoxlayın.