Nid yw 407 sy’n ailadrodd bob amser yn golygu bod Java wedi anfon y cyfrinair anghywir. Mae gweithrediad cyfeirio’r JDK fel arfer yn analluogi dilysu Basic ar gyfer twneli HTTPS CONNECT. Gall procsi sy’n cynnig Basic yn unig gael ei wrthod cyn i’ch swyddogaeth galw’n ôl ar gyfer dilysu ddarparu manylion mewngofnodi.

Cyfyngwch gwmpas y swyddogaeth galw’n ôl ar gyfer manylion mewngofnodi

Cysylltwch Authenticator â’r cleient HTTP Java a’i gyfyngu i’r procsi sydd wedi’i ffurfweddu:

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

Cod gosod ar gyfer un cleient yw hwn, nid dilysydd diofyn byd-eang. Amnewidiwch gyfeiriad y ddogfennaeth a defnyddiwch fanylion a ddarparwyd mewn gwirionedd ar gyfer y gwasanaeth hwnnw. Mae gwirio math y ceisydd a’r pwynt terfyn yn atal yr un swyddogaeth rhag cynnig cyfrif y procsi’n ddifeddwl mewn ymateb i her dilysu gan wefan.

Gwiriwch pa gam dilysu sy’n methu

Mae gan y JDK osodiadau ar wahân ar gyfer cynlluniau analluog wrth ddefnyddio procsi HTTP arferol ac wrth greu twneli CONNECT. Yr enwau perthnasol yw jdk.http.auth.proxying.disabledSchemes a jdk.http.auth.tunneling.disabledSchemes.

Mae hyn yn esbonio pam y gall traffig HTTP ddilysu tra bod twnnel HTTPS drwy’r un procsi’n methu. Gwiriwch conf/net.properties yr amgylchedd rhedeg a’r polisi defnyddio yn hytrach na chymryd bod gan beiriant arall yr un gwerthoedd diofyn effeithiol.

Nid yw gwagio rhestr o gynlluniau analluog yn fyd-eang yn ateb cyffredinol i broblemau procsi. Nid yw manylion Basic a anfonir at brocsi HTTP testun clir yn cael eu diogelu gan y cysylltiad TLS diweddarach â’r gyrchfan. Adolygwch gludiant y procsi, y dull dilysu a’r polisi defnyddio cyn cymeradwyo newid.

Nid yw ymddygiad dilysu mewnol dogfenedig y JDK chwaith yn addo cefnogi pob cynllun y mae procsi’n ei hysbysebu. Mae pennawd Authorization neu Proxy-Authorization a ddarperir â llaw yn newid llif y dilysydd awtomatig, felly archwiliwch benawdau personol pan fo ymddygiad y swyddogaeth galw’n ôl yn wahanol i’r enghraifft.

Erthyglau cysylltiedig