పదే పదే 407 రావడం ఎల్లప్పుడూ Java తప్పు పాస్‌వర్డ్ పంపిందని అర్థం కాదు. JDK రిఫరెన్స్ అమలు సాధారణంగా HTTPS CONNECT టన్నెల్‌లకు Basic ప్రమాణీకరణను నిలిపివేస్తుంది. Basic మాత్రమే అందించే ప్రాక్సీ, మీ ప్రమాణీకరణ callback ప్రవేశ వివరాలను అందించే ముందే తిరస్కరించబడవచ్చు.

ప్రవేశ వివరాల callback పరిధిని పరిమితం చేయండి

Java HTTP క్లయింట్‌కు Authenticator జతచేసి, దానిని కాన్ఫిగర్ చేసిన ప్రాక్సీకి పరిమితం చేయండి:

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

ఇది ఒక క్లయింట్ సెటప్ కోడ్, ప్రపంచవ్యాప్త డిఫాల్ట్ ప్రమాణీకరణ సాధనం కాదు. డాక్యుమెంటేషన్ చిరునామాను మార్చి, ఆ సేవకు నిజంగా అందించిన ప్రవేశ వివరాలను వాడండి. అభ్యర్థి రకం, ఎండ్‌పాయింట్ తనిఖీలు అదే callback వెబ్‌సైట్ ప్రమాణీకరణ సవాలుకు నిర్లక్ష్యంగా ప్రాక్సీ ఖాతాను అందించకుండా అడ్డుకుంటాయి.

ప్రమాణీకరణలో ఏ దశ విఫలమవుతోందో తనిఖీ చేయండి

సాధారణ HTTP ప్రాక్సీ వినియోగం, CONNECT టన్నెల్‌లకు నిలిపివేసిన ప్రమాణీకరణ పద్ధతుల వేర్వేరు సెట్టింగ్‌లు JDKలో ఉన్నాయి. సంబంధిత పేర్లు jdk.http.auth.proxying.disabledSchemes మరియు jdk.http.auth.tunneling.disabledSchemes.

అందువల్ల HTTP ట్రాఫిక్ ప్రమాణీకరణ విజయవంతమైనా అదే ప్రాక్సీ ద్వారా HTTPS టన్నెల్ విఫలమవవచ్చు. మరో కంప్యూటర్‌లోనూ అవే అమలులో ఉన్న డిఫాల్ట్‌లు ఉన్నాయని భావించకుండా రన్‌టైమ్ conf/net.properties, డిప్లాయ్‌మెంట్ విధానాన్ని తనిఖీ చేయండి.

నిలిపివేసిన పద్ధతుల జాబితాను అన్నిచోట్లా ఖాళీ చేయడం సాధారణ ప్రాక్సీ పరిష్కారం కాదు. గుప్తీకరించని HTTP ప్రాక్సీకి పంపిన Basic ప్రవేశ వివరాలను గమ్యంతో తరువాత ఏర్పడే TLS కనెక్షన్ రక్షించదు. మార్పును ఆమోదించే ముందు ప్రాక్సీ రవాణా, ప్రమాణీకరణ పద్ధతి, డిప్లాయ్‌మెంట్ విధానాన్ని సమీక్షించండి.

JDK అంతర్నిర్మిత ప్రమాణీకరణకు డాక్యుమెంట్ చేసిన ప్రవర్తన కూడా ప్రాక్సీ ప్రకటించే ప్రతి పద్ధతిని సమర్థిస్తామనే హామీ కాదు. చేతితో ఇచ్చిన Authorization లేదా Proxy-Authorization హెడర్ ఆటోమేటిక్ ప్రమాణీకరణ ప్రవాహాన్ని మారుస్తుంది; callback ఉదాహరణకు భిన్నంగా పనిచేస్తే కస్టమ్ హెడర్‌లను పరిశీలించండి.

సంబంధిత వ్యాసాలు