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 маршруты мен әдеттегі тексеру және аутентификация саясаты қажет.

Қатысты мақалалар