JNLP获得许可

时间:2012-06-06 17:03:28

标签: java security digital-signature jnlp java-web-start

我最近在通过JNLP启动应用程序时偶然发现了一个问题。我现在把它缩小到java.security.AccessControlException,这使我无法关闭ExecuterService

所以,我做了一些阅读,发现我需要权限(modifyThread)才能成功关闭服务。我还发现我应该使用<security> - 标签(在JNLP文件中)来请求它,但我对如何使用感到困惑。

documentation of the tag说:

  

[...]如果指定了 all-permissions元素,则应用程序   将拥有对客户端计算机和本地网络的完全访问权限。如果   应用程序请求完全访问权限,然后所有 JAR文件必须是   签名即可。将提示用户 [...]

从阅读本文来看,在我看来,我可以选择所有没有权限......这似乎是一个令人困惑的实现。因为我只需要关闭我的服务。

我还阅读this article,告诉我不应该请求所有权限,因为我会打开用户计算机以查找恶意代码。

那么,有没有办法指定我只需要特定的权限(modifyThread),因此我不需要签署我的jar?或者我是否必须使用“签署我的罐子并请求一切” - 接近?

1 个答案:

答案 0 :(得分:4)

  

..我是否必须使用“签署我的罐子并请求一切”-approach?

是。 JWS权限分为3级 1 ,唯一允许修改线程的是all-permissions

1)JWS安全级别

  • 沙箱。提供非常有限的环境。只允许使用JNLP API服务访问打印机和本地文件系统之类的东西,这些服务在提示用户后提供更有限形式的File。来自窗口横幅。只能与自己的服务器通信。
  • j2ee-application-client-permissions - 免费提供这些JNLP API服务(在用户接受经过数字签名的代码之后)删除窗口横幅。
  • all-permissions - 几乎所有内容,包括替换现有的安全管理器(是的,甚至“所有权限”代码都会在JWS中获得安全管理器 - 它只是非常宽松)。 / LI>

同时追逐JNLP&amp;的链接。 JWS页面。我个人可以推荐那些摘要&amp;链接。