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 yra esamas KeyStore.PrivateKeyEntry. Pateikite tarpinio serverio paskyros reikšmes iš programos prisijungimo duomenų šaltinio, tada naudokite šį pasirašytoją įprastame ZipFile ir išvesties srauto darbo procese.

Užklausėjo tipo predikatas išlaiko tarpinio serverio ir paskirties autentifikavimą atskirai ir neleidžia paskirties iššūkiui gauti tarpinio serverio slaptažodžio; hostas ir prievadas apriboja tarpininką.

Sistemos savybės ir numatytasis Authenticator veikia visą JVM. Nustatykite jų galiojimo laiką paleidimo metu, o ne perjunkite juos lygiagrečių užduočių metu.

Viešasis jdk.security.jarsigner API išvengia sun.security.tools.jarsigner.Main ir senų tools.jar išdėstymų. Pavyzdyje naudojama HTTP TSA; HTTPS TSA taip pat reikia savo HTTPS maršruto ir įprastos patikros bei autentifikavimo politikos.

Susiję straipsniai