407 errepikatzeak ez du beti esan nahi Javak pasahitz okerra bidali duenik. JDKren erreferentzia-inplementazioak normalean Basic autentifikazioa desgaitzen du HTTPS CONNECT tuneletan. Basic soilik eskaintzen duen proxya bazter daiteke autentifikazio-callbackak kredentzialak eman aurretik.

Mugatu kredentzialen callbackaren irismena

Gehitu Authenticator bat Javaren HTTP bezeroari eta mugatu konfiguratutako proxyari:

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

Hau bezero baten konfigurazio-kodea da, ez autentifikatzaile lehenetsi globala. Ordeztu dokumentazio-helbidea eta erabili zerbitzu horretarako benetan emandako kredentzialak. Eskaeragile motaren eta amaiera-puntuaren egiaztapenek callback berak proxyaren kontua webgunearen autentifikazio-erronka bati arduragabe ematea eragozten dute.

Egiaztatu zein autentifikazio-fasek huts egiten duen

JDK-k desgaitutako eskemen ezarpen bereiziak ditu HTTP proxy arrunterako eta CONNECT tuneletarako. Izenak jdk.http.auth.proxying.disabledSchemes eta jdk.http.auth.tunneling.disabledSchemes dira.

Horrek azaltzen du HTTP trafikoa autentifikatu ahal izatea eta proxy bereko HTTPS tunelak huts egitea. Egiaztatu exekuzio-ingurunearen conf/net.properties eta hedapen-politika, beste makina batek lehenetsi eraginkor berak dituela suposatu beharrean.

Desgaitutako eskemen zerrenda globalki hustea ez da proxyen konponketa orokorra. Testu argiko HTTP proxyari bidalitako Basic kredentzialak ez ditu babesten helmugarekiko ondorengo TLS konexioak. Aldaketa onartu aurretik berrikusi proxyaren garraioa, autentifikazio-metodoa eta hedapen-politika.

JDKren dokumentatutako barne-autentifikazioak ez du proxyak iragarritako eskema guztiak onartzeko promesarik egiten. Eskuz emandako Authorization edo Proxy-Authorization goiburuak autentifikatzaile automatikoaren fluxua aldatzen du; ikuskatu goiburu propioak callbackaren portaera adibidetik desberdina bada.

Erlazionatutako artikuluak