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 मार्ग और सामान्य सत्यापन और प्रमाणीकरण नीति चाहिए।

संबंधित लेख