Korduv 407 ei tähenda alati, et Java saatis vale parooli. JDK viiteteostus keelab tavaliselt HTTPS CONNECT-tunnelite Basic-autentimise. Ainult Basicut pakkuv puhverserver võidakse tagasi lükata enne, kui autentimise tagasikutse tunnused annab.

Piira tunnuste tagasikutse ulatust

Lisa Authenticator Java HTTP-kliendile ja piira see seadistatud puhverserveriga:

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();

See on kliendi seadistuskood, mitte globaalne vaikeautentija. Asenda dokumentatsiooni aadress ja kasuta päriselt selle teenuse jaoks antud tunnuseid. Pärija tüübi ning lõpp-punkti kontrollid takistavad samal tagasikutsel puhverserverikontot kergekäeliselt veebisaidi autentimispäringule pakkumast.

Kontrolli, milline autentimisaste ebaõnnestub

JDK-l on tavalise HTTP-puhverserveri ja CONNECT-tunnelite jaoks eraldi keelatud skeemide seaded. Nimed on jdk.http.auth.proxying.disabledSchemes ja jdk.http.auth.tunneling.disabledSchemes.

See selgitab, miks HTTP-liiklus võib autentida, samal ajal kui HTTPS-tunnel läbi sama puhverserveri nurjub. Kontrolli käituskeskkonna conf/net.properties faili ja juurutuspoliitikat, mitte ära eelda teises masinas samu tegelikke vaikeväärtusi.

Keelatud skeemide loendi globaalne tühjendamine ei ole üldine puhverserveriparandus. Krüpteerimata HTTP-puhverserverile saadetud Basic-tunnuseid ei kaitse hilisem TLS-ühendus sihtkohaga. Enne muudatuse kinnitamist vaata üle puhverserveri transport, autentimismeetod ja juurutuspoliitika.

JDK dokumenteeritud sisseehitatud autentimiskäitumine ei luba samuti toetada iga puhverserveri reklaamitud skeemi. Käsitsi lisatud Authorization või Proxy-Authorization päis muudab automaatse autentija voogu, seega kontrolli oma päiseid, kui tagasikutse erineb näitest.

Seotud artiklid