Как предоставить все разрешения для Java-апплета через JNLP без всплывающих окон - PullRequest
2 голосов
/ 07 июля 2011

Мы запускаем апплет с использованием jnlp Апплету необходимо загрузить собственную библиотеку. Jar и jnlp подписаны самогенерируемым сертификатом.JNLP предоставляет все разрешения с

<security>
     <all-permissions/>
</security>

Файл политики предоставляет все разрешения grant {разрешение java.security.AllPermission;};

Мы получаем всплывающее диалоговое окно «Предупреждение безопасности Java», в котором говорится: это приложение будет выполнять небезопасную операцию.Продолжить?

Продолжить или отменить (см. Прикрепленный снимок экрана)

enter image description here

Нет кнопки «Всегда разрешать»

Это означает, что диалоговое окно появляется каждый раз, когда апплет запущен.Это раздражает пользователя.

Что можно сделать, чтобы отключить всплывающее диалоговое окно или сделать его не более одного раза?

Ответы [ 4 ]

3 голосов
/ 18 декабря 2012

У нас была проблема с аргументами JNLP. Вы не можете указать какой-либо аргумент в параметре jre args JNLP, иначе вы получите предупреждение безопасности.

Чтобы избежать всплывающих предупреждений безопасности, используйте свойства и аргументы JVM из списков, расположенных в строке 638: http://javasourcecode.org/html/open-source/jdk/jdk-6u23/com/sun/deploy/config/Config.java.html

В вашей JNLP, если в аргументах JVM есть что-то, чего там нет в списке, вы получите всплывающее окно, даже если вы правильно подписали сертификат. Все сводится к использованию «защищенных» параметров + соответствующего сертификата, и все будет в порядке.

EDIT

URL был удален, поэтому вот действительные аргументы:

// note: this list MUST correspond to native secure.c file
private static String[] secureVmArgs = {
    "-d32",                         /* use 32-bit data model if available */
    "-client",                      /* to select the "client" VM */
    "-server",                      /* to select the "server" VM */
    "-verbose",                     /* enable verbose output */
    "-version",                     /* print product version and exit */
    "-showversion",                 /* print product version and continue */
    "-help",                        /* print this help message */
    "-X",                           /* print help on non-standard options */
    "-ea",                          /* enable assertions */
    "-enableassertions",            /* enable assertions */
    "-da",                          /* disable assertions */
    "-disableassertions",           /* disable assertions */
    "-esa",                         /* enable system assertions */
    "-enablesystemassertions",      /* enable system assertions */
    "-dsa",                         /* disable system assertione */
    "-disablesystemassertions",     /* disable system assertione */
    "-Xmixed",                      /* mixed mode execution (default) */
    "-Xint",                        /* interpreted mode execution only */
    "-Xnoclassgc",                  /* disable class garbage collection */
    "-Xincgc",                      /* enable incremental gc. */
    "-Xbatch",                      /* disable background compilation */
    "-Xprof",                       /* output cpu profiling data */
    "-Xdebug",                      /* enable remote debugging */
    "-Xfuture",                     /* enable strictest checks */
    "-Xrs",                         /* reduce use of OS signals */
    "-XX:+ForceTimeHighResolution", /* use high resolution timer */
    "-XX:-ForceTimeHighResolution", /* use low resolution (default) */
    "-XX:+PrintGCDetails",          /* Gives some details about the GCs */
    "-XX:+PrintGCTimeStamps",       /* Prints GCs times happen to the start of the application */
    "-XX:+PrintHeapAtGC",           /* Prints detailed GC info including heap occupancy */
    "-XX:PrintCMSStatistics",       /* If > 0, Print statistics about the concurrent collections */
    "-XX:+PrintTenuringDistribution",  /* Gives the aging distribution of the allocated objects */
    "-XX:+TraceClassUnloading",     /* Display classes as they are unloaded */
    "-XX:SurvivorRatio",            /* Sets the ratio of the survivor spaces */
    "-XX:MaxTenuringThreshol",      /* Determines how much the objects may age */
    "-XX:CMSMarkStackSize",
    "-XX:CMSMarkStackSizeMax",
    "-XX:+CMSClassUnloadingEnabled",/* It needs to be combined with -XX:+CMSPermGenSweepingEnabled */
    "-XX:+CMSIncrementalMode",      /* Enables the incremental mode */
    "-XX:CMSIncrementalDutyCycleMin",  /* The percentage which is the lower bound on the duty cycle */
    "-XX:+CMSIncrementalPacing",    /* Automatic adjustment of the incremental mode duty cycle */
    "-XX:CMSInitiatingOccupancyFraction",  /* Sets the threshold percentage of the used heap */
    "-XX:+UseConcMarkSweepGC",      /* Turns on concurrent garbage collection */
    "-XX:-ParallelRefProcEnabled",
    "-XX:ParallelGCThreads",        /* Sets the number of parallel GC threads */
    "-XX:ParallelCMSThreads",
    "-XX:+DisableExplicitGC",       /* Disable calls to System.gc() */
    "-XX:+UseCompressedOops",       /* Enables compressed references in 64-bit JVMs */
    "-XX:+UseG1GC",
    "-XX:GCPauseIntervalMillis",
    "-XX:MaxGCPauseMillis"          /* A hint to the virtual machine to pause times */
};

EDIT

В то время у нас были следующие аргументы:

    <j2se version="1.6.0+"
         initial-heap-size="${heap.init}"
         max-heap-size="${heap.max}"
         java-vm-args="-Djava.security.policy=${jnlp.ip}${jnlp.port}/ed/security/java.policy"/>

Проблема была с -Djava.security.policy, и я не мог понять всплывающее окно, пока не удалил его оттуда.

НОВЫЙ URL ДЛЯ java-источника jdk6.23

3 голосов
/ 11 июля 2011

Что можно сделать, чтобы отключить это диалоговое окно, чтобы оно появлялось или отображалось не более одного раза?

Используйте сертификат, который был проверен доверенным органом. Отключение / игнорирование поля «всегда разрешать» для самозаверяющих сертификатов является решением Oracle о том, что они вряд ли изменятся.

1 голос
/ 13 ноября 2013

У меня были следующие параметры и возникла та же проблема:

-Xss4m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5021

Удаление их решило эту проблему.

1 голос
/ 12 ноября 2013

Использование параметров удаленной отладки в JAVA_OPTS может вызвать это всплывающее окно

-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n

...