JNLP获得许可

Luk*_*uth 5 java security jnlp digital-signature java-web-start

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

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

标签文档说:

[...]如果all-permissions指定元素,则应用程序将具有对客户端计算机和本地网络的完全访问权限.如果应用程序请求完全访问权限,则必须对所有JAR文件进行签名.该用户将被提示 [...]

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

我也阅读了这篇文章,告诉我不应该请求所有权限,因为我会打开用户计算机以获取恶意代码.

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

And*_*son 4

..我必须采用“签署我的罐子并请求一切”的方法吗?

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

1) JWS安全级别

  • 沙箱化。提供了非常有限的环境。仅允许使用 JNLP API 服务访问打印机和本地文件系统等内容,该服务File在提示用户后提供更有限的形式。配有窗户横幅。只能与自己的服务器通信。
  • j2ee-application-client-permissions- 自动提供这些 JNLP API 服务(在用户接受数字签名代码后),删除窗口横幅。
  • all-permissions- 几乎任何事情,包括替换现有的安全管理器(是的,甚至“所有权限”代码在 JWS 中都有一个安全管理器 - 它非常宽松)。

还可以追踪JNLPJWS页面的链接。我个人可以推荐这些摘要和链接。