In werhelle 407 betsjut net altyd dat Java it ferkearde wachtwurd stjoerd hat. De JDK-referinsje-ymplemintaasje skeakelt Basic-autentikaasje foar HTTPS CONNECT-tunnels normaal út. In proxy mei allinnich Basic kin ôfwiisd wurde foar’t dyn autentikaasje-callback gegevens leveret.

Behein it berik fan de callback foar ynloggegevens

Keppelje in Authenticator oan de Java-HTTP-kliïnt en beheine him ta de ynstelde proxy:

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

Dit is opsetkoade foar in kliïnt, gjin globale standertautentikator. Ferfang it dokumintaasjeadres en brûk ynloggegevens dy’t echt foar dy tsjinst jûn binne. Kontrolearjen fan oanfregerstype en einpunt foarkomt dat deselde callback samar it proxyakkount oan in webside-autentikaasjefraach oanbiedt.

Kontrolearje hokker autentikaasjestap mislearret

De JDK hat aparte ynstellingen foar útskeakele skema’s by gewoane HTTP-proxy’s en CONNECT-tunnels. De nammen binne jdk.http.auth.proxying.disabledSchemes en jdk.http.auth.tunneling.disabledSchemes.

Dat ferklearret wêrom’t HTTP-ferkear autentisearje kin wylst in HTTPS-tunnel troch deselde proxy mislearret. Kontrolearje conf/net.properties fan de runtime en it útrôlbelied ynstee fan oan te nimmen dat in oare masine deselde effektive standerten hat.

In list mei útskeakele skema’s globaal leech meitsje is gjin algemiene proxyreparaasje. Basic-gegevens nei in HTTP-proxy yn dúdlike tekst wurde net troch de lettere TLS-ferbining nei de bestimming beskerme. Beoardielje it proxytransport, de autentikaasjemetoade en it útrôlbelied foar’t in feroaring goedkard wurdt.

It dokumintearre ynboude autentikaasjegedrach fan de JDK belooft ek gjin stipe foar elk skema dat in proxy oanbiedt. In hânmjittige Authorization- of Proxy-Authorization-header feroaret de automatyske autentikatorstream; besjoch eigen headers as de callback oars reagearret as it foarbyld.

Relatearre artikelen