ការទទួល 407 ម្តងហើយម្តងទៀត មិនតែងតែមានន័យថា Java បានផ្ញើពាក្យសម្ងាត់ខុសទេ។ ការអនុវត្តយោងរបស់ JDK ជាធម្មតាបិទការផ្ទៀងផ្ទាត់ Basic សម្រាប់ផ្លូវរូង HTTPS CONNECT។ ប្រូកស៊ីដែលផ្តល់តែ Basic អាចត្រូវបានបដិសេធ មុនពេល callback ផ្ទៀងផ្ទាត់របស់អ្នកផ្តល់ព័ត៌មានសម្ងាត់។

កំណត់វិសាលភាពរបស់ callback ព័ត៌មានសម្ងាត់

ភ្ជាប់ Authenticator ទៅ កម្មវិធីភ្ញៀវ HTTP របស់ Java ហើយកំណត់ឱ្យប្រើតែជាមួយប្រូកស៊ីដែលបានកំណត់រចនាសម្ព័ន្ធ៖

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 ដដែលពីការផ្តល់គណនីប្រូកស៊ីដោយមិនប្រុងប្រយ័ត្ន នៅពេលគេហទំព័រទាមទារការផ្ទៀងផ្ទាត់។

ពិនិត្យថាដំណាក់កាលផ្ទៀងផ្ទាត់ណាមួយបរាជ័យ

JDK មានការកំណត់គ្រោងការណ៍ផ្ទៀងផ្ទាត់ដែលបានបិទដាច់ដោយឡែក សម្រាប់ HTTP ធម្មតាតាមប្រូកស៊ី និងសម្រាប់ផ្លូវរូង CONNECT។ ឈ្មោះពាក់ព័ន្ធគឺ jdk.http.auth.proxying.disabledSchemes និង jdk.http.auth.tunneling.disabledSchemes។

នេះពន្យល់ថាហេតុអ្វីចរាចរណ៍ HTTP អាចផ្ទៀងផ្ទាត់បាន ប៉ុន្តែផ្លូវរូង HTTPS តាមប្រូកស៊ីដដែលបរាជ័យ។ ពិនិត្យ conf/net.properties របស់បរិស្ថានដំណើរការ និងគោលការណ៍ដាក់ឱ្យប្រើ ជំនួសឱ្យការសន្មតថាម៉ាស៊ីនផ្សេងមានតម្លៃលំនាំដើមដែលមានប្រសិទ្ធភាពដូចគ្នា។

ការលុបបញ្ជីគ្រោងការណ៍ដែលបានបិទឱ្យទទេជាសកល មិនមែនជាវិធីជួសជុលប្រូកស៊ីទូទៅទេ។ ព័ត៌មានសម្ងាត់ Basic ដែលផ្ញើទៅប្រូកស៊ី HTTP ជាអត្ថបទច្បាស់ មិនត្រូវបានការពារដោយការតភ្ជាប់ TLS ជាមួយគោលដៅដែលបង្កើតនៅពេលក្រោយទេ។ ពិនិត្យ ការដឹកជញ្ជូនរបស់ប្រូកស៊ី វិធីផ្ទៀងផ្ទាត់ និងគោលការណ៍ដាក់ឱ្យប្រើ មុននឹងអនុម័តការផ្លាស់ប្តូរ។

ឥរិយាបថផ្ទៀងផ្ទាត់ដែលមានស្រាប់ក្នុង JDK និងបានចងក្រងជាឯកសារ ក៏មិនមែនជាការសន្យាថាគាំទ្រគ្រប់គ្រោងការណ៍ដែលប្រូកស៊ីប្រកាសទេ។ បឋមកថា Authorization ឬ Proxy-Authorization ដែលផ្តល់ដោយដៃ ផ្លាស់ប្តូរលំហូររបស់ឧបករណ៍ផ្ទៀងផ្ទាត់ស្វ័យប្រវត្តិ ដូច្នេះពិនិត្យបឋមកថាផ្ទាល់ខ្លួន នៅពេលឥរិយាបថ callback ខុសពីឧទាហរណ៍។

អត្ថបទពាក់ព័ន្ធ