System.setProperty("http.proxyHost", "proxy.example");
System.setProperty("http.proxyPort", "8080");

java.net.Authenticator.setDefault(new java.net.Authenticator() {
    @Override
    protected java.net.PasswordAuthentication getPasswordAuthentication() {
        if (getRequestorType() == RequestorType.PROXY
                && "proxy.example".equalsIgnoreCase(getRequestingHost())
                && getRequestingPort() == 8080) {
            return new java.net.PasswordAuthentication(
                proxyUser, proxyPassword.toCharArray());
        }
        return null;
    }
});

var signer = new jdk.security.jarsigner.JarSigner.Builder(signingEntry)
    .tsa(java.net.URI.create("http://tsa.example/"))
    .build();

signingEntry हे विद्यमान KeyStore.PrivateKeyEntry आहे. अनुप्रयोगाच्या क्रेडेन्शियल स्रोताकडून प्रॉक्सी खात्याची मूल्ये द्या, नंतर हे साइनर त्याच्या नेहमीच्या ZipFile आणि आउटपुट-स्ट्रीम कार्यप्रवाहात वापरा.

विनंतीकर्ता-प्रकाराचा विधेय प्रॉक्सी आणि गंतव्य प्रमाणीकरण वेगळे ठेवतो, त्यामुळे गंतव्याचे आव्हान प्रॉक्सी पासवर्ड मिळवू शकत नाही; होस्ट आणि पोर्ट मध्यस्थाला मर्यादित करतात.

सिस्टम गुणधर्म आणि डीफॉल्ट Authenticator संपूर्ण JVM वर परिणाम करतात. एकाच वेळी चालणाऱ्या कामांभोवती ते बदलण्याऐवजी सुरुवातीला त्यांचे आयुष्यमान ठरवा.

सार्वजनिक jdk.security.jarsigner API sun.security.tools.jarsigner.Main आणि जुन्या tools.jar मांडणी टाळते. उदाहरण HTTP TSA वापरते; HTTPS TSA लाही त्याचा HTTPS मार्ग आणि नेहमीचे पडताळणी व प्रमाणीकरण धोरण आवश्यक आहे.

संबंधित लेख