407 ripetut mhux dejjem ifisser li Java bagħtet password ħażina. L-implimentazzjoni ta’ referenza tal-JDK normalment tiddiżattiva l-awtentikazzjoni Basic għall-mini HTTPS CONNECT. Proxy li joffri biss Basic jista’ jiġi rrifjutat qabel ma l-callback tal-awtentikazzjoni jipprovdi l-kredenzjali.

Illimita l-ambitu tal-callback tal-kredenzjali

Waħħal Authenticator mal-klijent HTTP Java u llimitah għall-proxy kkonfigurat:

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

Dan huwa kodiċi ta’ konfigurazzjoni għal klijent, mhux awtentikatur globali predefinit. Ibdel l-indirizz tad-dokumentazzjoni u uża kredenzjali li fil-fatt ingħataw għal dak is-servizz. Il-kontrolli tat-tip ta’ min jagħmel it-talba u tal-punt tat-tmiem jipprevjenu lill-istess callback milli joffri bla ħsieb il-kont tal-proxy lil sfida ta’ awtentikazzjoni minn sit web.

Iċċekkja liema stadju tal-awtentikazzjoni qed ifalli

Il-JDK għandu settings separati tal-iskemi diżattivati għal HTTP ordinarju permezz ta’ proxy u għall-mini CONNECT. L-ismijiet rilevanti huma jdk.http.auth.proxying.disabledSchemes u jdk.http.auth.tunneling.disabledSchemes.

Dan jispjega għaliex it-traffiku HTTP jista’ jawtentika filwaqt li mina HTTPS mill-istess proxy tfalli. Iċċekkja conf/net.properties tal-ambjent ta’ eżekuzzjoni u l-politika tal-iskjerament minflok tassumi li magna oħra għandha l-istess valuri predefiniti effettivi.

Li tbattal globalment lista ta’ skemi diżattivati mhuwiex rimedju ġenerali għall-proxy. Il-kredenzjali Basic mibgħuta lil proxy HTTP b’test ċar ma jkunux protetti mill-konnessjoni TLS li ssir aktar tard mad-destinazzjoni. Irrevedi t-trasport tal-proxy, il-metodu tal-awtentikazzjoni u l-politika tal-iskjerament qabel tapprova bidla.

L-imġiba dokumentata tal-awtentikazzjoni integrata fil-JDK lanqas ma twiegħed appoġġ għal kull skema li jħabbar proxy. Header Authorization jew Proxy-Authorization ipprovdut manwalment ibiddel il-fluss tal-awtentikatur awtomatiku, għalhekk spezzjona l-headers personalizzati meta l-callback iġib ruħu differenti mill-eżempju.

Artikli relatati