首页 文章

JNLP获得许可

提问于
浏览
5

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

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

documentation of the tag说:

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

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

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

那么,有没有办法指定我只需要特定的权限( modifyThread ),因此我不需要签署我的jar?或者我必须使用"sign my jar and request everything" -approach?

1 回答

  • 4

    ..我是否必须选择“签署我的 jar 并请求一切”-approach?

    是 . JWS权限有3个级别1,唯一允许修改线程的级别是 all-permissions .

    1)JWS安全级别

    • 沙盒装 . 提供非常有限的环境 . 只允许使用JNLP API服务访问打印机和本地文件系统之类的东西,这些服务在提示用户后提供更多有限形式的 File . 来自窗口 Banner . 只能与自己的服务器通信 .

    • j2ee-application-client-permissions - 自动提供这些JNLP API服务(在用户接受数字签名代码之后)删除窗口 Banner .

    • all-permissions - 几乎所有东西,包括替换现有的安全管理器(是的,甚至'all permissions'代码在JWS中获得安全管理器 - 它只是非常宽松) .

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

相关问题