Endurtekið 407 þýðir ekki alltaf að Java hafi sent rangt lykilorð. Viðmiðunarútfærsla JDK slekkur venjulega á Basic-auðkenningu fyrir HTTPS CONNECT-göng. Proxy sem býður aðeins Basic getur verið hafnað áður en auðkenningar-callbackið gefur innskráningargögn.

Takmarkaðu umfang innskráningar-callbacksins

Tengdu Authenticator við Java HTTP-biðlarann og takmarkaðu hann við stilltan 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();

Þetta er uppsetningarkóði fyrir biðlara, ekki almennur sjálfgefinn auðkenningaraðili. Skiptu út skjölunarfanginu og notaðu gögn sem voru raunverulega gefin fyrir þjónustuna. Athuganir á gerð beiðanda og endapunkti koma í veg fyrir að sama callback bjóði proxyreikninginn hugsunarlaust við auðkenningarkröfu vefsvæðis.

Athugaðu hvaða auðkenningarstig bregst

JDK hefur aðskildar stillingar fyrir óvirkar aðferðir við venjulega HTTP-proxynotkun og CONNECT-göng. Heitin eru jdk.http.auth.proxying.disabledSchemes og jdk.http.auth.tunneling.disabledSchemes.

Þetta skýrir hvers vegna HTTP-umferð getur auðkennst á meðan HTTPS-göng um sama proxy bregðast. Athugaðu conf/net.properties keyrsluumhverfisins og dreifingarstefnu í stað þess að gera ráð fyrir sömu virku sjálfgefnu gildum á annarri vél.

Að tæma lista óvirkra aðferða almennt er ekki almenn proxyviðgerð. Basic-gögn send til HTTP-proxy í ódulkóðuðum texta eru ekki varin af síðari TLS-tengingu við áfangastað. Farðu yfir flutningsmáta proxy, auðkenningaraðferð og dreifingarstefnu áður en breyting er samþykkt.

Skjalfest innbyggð auðkenningarhegðun JDK er heldur ekki loforð um stuðning við sérhverja aðferð sem proxy auglýsir. Authorization- eða Proxy-Authorization-haus sem gefinn er handvirkt breytir flæði sjálfvirka auðkenningaraðilans; skoðaðu sérsniðna hausa þegar callback hegðar sér öðruvísi en dæmið.

Tengdir greinar