如何在没有弹出窗口的情况下通过 JNLP 授予 Java 小程序的所有权限
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6610266/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to grant all permissions to java applet through JNLP without popups
提问by code-gijoe
We are launching an applet using jnlp The applet needs to load a native library The jar and the jnlp are signed with a self generated certificate. The jnlp grants all permission with
我们正在使用 jnlp 启动一个小程序 小程序需要加载一个本地库 jar 和 jnlp 是用自己生成的证书签名的。jnlp 授予所有权限
<security>
<all-permissions/>
</security>
The policy file grants all permissions grant { permission java.security.AllPermission; };
策略文件授予所有权限 grant { permission java.security.AllPermission; };
We are getting a popup dialog “ java security warning” That says: this application is going to perform an insecure operation. Do you want to continue ?
我们得到一个弹出对话框“java 安全警告”,它说:这个应用程序将执行一个不安全的操作。你要继续吗 ?
Continue or cancel (see attached screen shot)
继续或取消(见附件截图)
There is no “allow always” button
没有“总是允许”按钮
Which means that the dialog pops up “every time” the applet is launched. This is annoying to the user.
这意味着“每次”启动小程序时都会弹出对话框。这对用户来说很烦人。
What can be done to disable this dialog to pop up or to make it appear at most once?
如何禁用此对话框弹出或使其最多出现一次?
回答by Andrew Thompson
What can be done to disable this dialog to pop up or to make it appear at most once?
如何禁用此对话框弹出或使其最多出现一次?
Use a certificate that has been verified by a trusted authority. Disabling/ignoring the 'always allow' field for self-signed certificates is a decision by Oracle that they are unlikely to change.
使用已由受信任机构验证的证书。禁用/忽略自签名证书的“始终允许”字段是 Oracle 的一项决定,它们不太可能更改。
回答by code-gijoe
We had a problem with the JNLP arguments actually. You cannot specify any argument in the JNLP jre args parameter otherwise you'll get the security warning.
实际上,我们在 JNLP 参数上遇到了问题。您不能在 JNLP jre args 参数中指定任何参数,否则您将收到安全警告。
To avoid security warning popup use the properties and JVM arguments from the lists located from line 638: http://javasourcecode.org/html/open-source/jdk/jdk-6u23/com/sun/deploy/config/Config.java.html
为避免弹出安全警告,请使用来自第 638 行的列表中的属性和 JVM 参数:http: //javasourcecode.org/html/open-source/jdk/jdk-6u23/com/sun/deploy/config/Config.java .html
On your JNLP, if the JVM arguments include something that is not listed in there, you will get the popup even if you properly sign the certificate. It all boils down to using 'secured' parameters + a proper certificate and it will be ok.
在您的 JNLP 上,如果 JVM 参数包含未在其中列出的内容,即使您正确签署了证书,您也会收到弹出窗口。这一切都归结为使用“安全”参数+适当的证书,就可以了。
EDIT
编辑
The URL was removed so here are the valid arguments:
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
编辑
At the time we had these arguments:
当时我们有这些论点:
<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"/>
The problem was with -Djava.security.policy, and I couldn't understand the popup until I removed it from there.
问题出在 -Djava.security.policy 上,我无法理解弹出窗口,直到我从那里删除它。
回答by jsaddwater
Using the remote debug parameters in JAVA_OPTS can cause this pop-up
使用 JAVA_OPTS 中的远程调试参数会导致这个弹窗
-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n
-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n
回答by Yury Eroshenkov
I had the following params and got the same problem:
我有以下参数并遇到了同样的问题:
-Xss4m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5021
Removing them solved it.
删除它们解决了它。