2011-08-09 28 views
3

我开发了一个基于HTTP安全性的Web服务器上的Java Web Start应用程序。 一旦我登录到启动我的Java Web Start应用程序的网页,应用程序会再次要求我进行身份验证,即使我勾选“将此密码保存到密码列表”,它也会再次提示此验证对话框。Java Web Start不断要求认证

如果我没有错,这是因为它试图访问其他罐子。

我想知道是否有定义或自动通过验证用户名和密码才能摆脱这恼人的“功能”

感谢您的帮助

+0

我想指定我已经签署了应用程序的所有罐子 – Mallinok

+0

什么是''设置?您是否接受用于签署JAR的证书? – trashgod

+0

@trashgod因为应用程序需要读取和写入到本地计算机,我不得不将安全设置为: <全权限/> Mallinok

回答

2

号必须在验证的方式服务器访问应用程序,并且您必须向客户端进行身份验证才能允许<all-permissions/>。以客户操作系统提供的方式接受提供的证书应该排除重复的凭证请求。作为参考,此example已签名,但不需要<security>

+0

什么我不清楚的是,为什么Java Web Start的是要求网络服务器认证,它不应该只是要求用户接受证书吗? – Mallinok

+0

啊,JWS必须检查服务器的更新; ''offline-allowed />'可能会有所帮助。在JAR签名后,为什么不通过'http'来提供应用程序?这也会更快。 – trashgod

+0

呃好的,离线允许已经设置,是否有避免寻找更新的步骤? 原因是我想授予对该应用程序的访问权限,仅限于已认证的用户 – Mallinok

2

可能是因为User-Agent HTTP请求标头不一样。

当您浏览到您的Web Start的页面,您的浏览器发送带有 的User-Agent向HTTP服务器的请求:任何浏览器使用的是

当JRE要求被从下载JAR文件HTTP服务器,其发送 用户代理的请求:任何Java版本使用的是

从HTTP服务器的角度来看,这是2个不同的客户,因此系统会提示您两次凭据。

+0

如果是这种情况,是否可以将验证参数从一个代理传递给另一个代理? – Mallinok

+0

这对我来说也可以硬编码用户名和密码,但是我应该设置什么System属性? – Mallinok

+1

@Mallinok:你可以用类似于http:// user:[email protected]/file.jar的方式配置jnlp文件中的所有URL,但请记住任何人都可以通过下载来查看你的凭证jnlp文件。这不被推荐。为什么不将密码保护文件夹外的jar文件托管? –