Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 7 update 51的Java Web Start安全对话框_Java_Security_Java Web Start - Fatal编程技术网

Java 7 update 51的Java Web Start安全对话框

Java 7 update 51的Java Web Start安全对话框,java,security,java-web-start,Java,Security,Java Web Start,我构建了一个用有效证书签名的JavaWebStart应用程序 当我启动应用程序时,安全对话框将正确显示,如下图所示 我的问题是关于“不再显示”复选框 如果属性href出现在jnlp文件的jnlp标记中,则会出现复选框 如果属性不存在,则复选框不会出现,每次都需要确认运行 (例如: ) 这是一个问题,因为我的jnlp文件位于密码保护的目录下,如果指定了href,Java Web Start应用程序将尝试将其作为其他资源检索。(导致访问被拒绝,因为只有浏览器会话经过身份验证且运行失败) 部署Ja

我构建了一个用有效证书签名的JavaWebStart应用程序

当我启动应用程序时,安全对话框将正确显示,如下图所示

我的问题是关于“不再显示”复选框

如果属性href出现在jnlp文件的jnlp标记中,则会出现复选框

如果属性不存在,则复选框不会出现,每次都需要确认运行

(例如:

)

这是一个问题,因为我的jnlp文件位于密码保护的目录下,如果指定了href,Java Web Start应用程序将尝试将其作为其他资源检索。(导致访问被拒绝,因为只有浏览器会话经过身份验证且运行失败)

部署Java Web Start应用程序时的文档说明:

在部署至少在Java SE 6 update 18或更高版本上运行的Java Web Start应用程序时,codebase和href属性是可选的。部署Java Web Start应用程序时,必须指定代码库和href属性,这些应用程序将与Java运行时环境软件的早期版本一起运行

正确的代码是什么?有还是没有

这是一个BUG还是一个特性


如何在不指定href属性的情况下显示“不再显示”复选框?

经过大量搜索和测试,我们只找到了这两种方法,用于Java Web Start应用程序,该应用程序使用可信的第三方证书正确签名,将在JRE 1.7.051下部署并显示预期的安全对话框(使用“不再显示此项…”复选框):

1) 添加href=和您上面描述的启动文件自引用,例如:

jnlp spec="1.0+" codebase="http://some.dn.com/OurAppHome/"  href="launch.jnlp"
这对于通过ASP生成JNLP的站点来说并不直接,或者在上面提到的其他条件下

2) 正确的做法是:JAR清单,这样它就不会在控制台日志中显示缺失的诸如此类的清单属性。我们找到的7u51的最小附加清单属性必须存在(*s作为测试值)):

因此,我们的工作完整构建脚本测试清单如下所示(已生成版本):



如果没有href,我不知道你会怎么做,但我的问题是,为什么它在受保护的目录中?如果它在公共目录中,不是会更简单/更直接吗?href属性是可选的,因为java 6u18(正如我前面所说,请仔细阅读问题)。我需要保护jnlp!如果我可以使用简单的解决方案,我不会问任何问题。Applet和web start安全功能确实感觉像是被匆忙投入生产。如果它们设法打破了非通用用例,我不会感到惊讶。你最好的办法是保持事物的简单和标准。我也有同样的问题,我解决了它现在,通过将会话id和令牌添加到href字符串并再次启动会话进行身份验证,下一个问题是,我似乎总是获得java徽标,而不是我们自己的徽标。更进一步,如果您从快捷方式启动应用程序,复选框就在那里,而href不在原始JNLP中。谢谢。我相信您“您已经确认了这一点吗?也感谢您的帖子……href=是一个解决方案,我们的客户可以轻松实现,而不需要动态生成JNLP(使用我们先前签署的现有JAR-在添加应用程序库之前)。是的,我尝试过,而且效果很好。这种行为在应用程序库允许的代码库段落中有文档记录……最好高亮显示是的,文档记录得像泥浆一样清晰:)在我看来,不太可能有很多(大多数?)我会阅读该文档并认识到这一影响。我看到该文本并决定尝试它,这更像是一次充满希望的尝试。非常感谢此解决方案。经历了许多天和晚上。添加了href,然后开始出现会话问题。只需更改清单文件就成功了。
Permissions: all-permissions
Codebase: *
Application-Library-Allowable-Codebase: *
         <manifest>
             <attribute name="Application-Name" value="Our App Name"/>
             <attribute name="Main-Class" value="com.whatever.main.AppLoader"/>
             <attribute name="Class-Path" value="./Corejar.jar ./Support.jar"/>
             <attribute name="Built-By" value="${user.name}"/>
             <attribute name="Permissions" value="all-permissions"/>
             <attribute name="Codebase" value="*"/>
             <attribute name="Application-Library-Allowable-Codebase" value="*"/>
             <attribute name="Trusted-Only" value="true"/>
             <attribute name="Specification-Title" value="Our App Name"/>
             <attribute name="Specification-Version" value="${version}"/>
             <attribute name="Specification-Vendor" value="Our Company Name"/>
         </manifest>