Кайталанган 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 баш сабы автоматтык аутентификатордун агымын өзгөртөт, ошондуктан кайра чакыруу мисалдан башкача иштесе, атайын баш саптарды текшериңиз.

Тектеш макалалар