网站标题符号的应用,百度账号注册申请,免费网络营销方式,做废旧哪个网站好在上一篇文章中 #xff0c;我们介绍了为Java应用程序实现沙箱的方法#xff0c;在其中我们可以安全地运行移动代码 。 这篇文章探讨了如何在OSGi环境中执行相同的操作。 OSGi OSGi规范 为Java定义了一个动态模块系统 。 因此#xff0c;它是实施那种可以使您的应用程序动… 在上一篇文章中 我们介绍了为Java应用程序实现沙箱的方法在其中我们可以安全地运行移动代码 。 这篇文章探讨了如何在OSGi环境中执行相同的操作。 OSGi OSGi规范 为Java定义了一个动态模块系统 。 因此它是实施那种可以使您的应用程序动态添加移动代码的插件系统的理想选择。 OSGi中的安全性基于我们之前讨论的Java 2安全性体系结构因此您可以重复使用有关代码签名等方面的知识。 但是OSGi进一步走了几步。 吊销权限 Java权限模型的弱点之一是您只能显式授予权限而不能撤销它们。 在许多情况下您都希望允许所有内容特殊情况除外。 没有使用标准Java权限来执行此操作的方法但是幸运的是OSGi引入了一种解决方案。 缺点是OSGi引入了自己的语法来指定策略。 以下示例显示如何拒绝com.acme.secret子包的PackagePermission DENY {( ..PackagePermission com.acme.secret.* import,exportonly )
} denyExample 在下面的示例中我给出了权限类的简单名称而不是完全限定名称。我通过在简单名称前面加上..暗示这一点.. PackagePermission是OSGi定义的用于对包导入和导出进行授权的权限。 您的应用程序可以使用这样的策略来确保移动代码无法调用给定程序包中的类例如以限制对数据库的直接访问。 权限的可扩展条件 OSGi带来的第二个改进是可以在运行时动态评估授予权限的条件。 以下示例显示如何有条件地授予ServicePermission ALLOW {[ ..BundleSignerCondition * ; oACME ]( ..ServicePermission ..ManagedService register )
} conditionalExample ServicePermission是OSGi定义的权限用于限制对OSGi服务的访问。 条件是方括号之间的部分。 OSGi定义了两个条件它们对应于常规Java策略中的signedBy和codeBase构造。 您还可以定义自己的条件 。 该规范给出了有关实施条件的详细说明尤其是有关性能的说明。 不同类型的权限 OSGi带给Java权限模型的最后一项创新是存在不同类型的权限。 捆绑包可以指定自己的权限。 这并不意味着捆绑包可以为其授予权限而是可以指定其运行所需的最大特权。 这些权限称为本地权限 。 OSGi框架确保该捆绑包永远不会拥有比本地权限更多的权限从而实现了最小特权的原则 。 实际上该说法并不完全准确。 每个捆绑软件都将具有在OSGi环境中运行所需的某些权限例如能够读取org.osgi.framework.*系统属性。 这些权限被称为隐式权限 因为每个捆绑软件都将拥有它们无论权限是否明确授予捆绑软件。 权限的最终类型是系统权限 。 这些是授予捆绑软件的权限。 有效权限是在运行时检查的一组权限 effective (local ∩ system) ∪ implicit 本地权限启用审核。 在将捆绑软件安装到OSGi环境之前您可以检查OSGI-INF/permissions.perm的捆绑软件许可资源 以查看捆绑软件需要哪些许可。 如果您不满意向捆绑软件授予这些权限则可以决定不安装捆绑软件。 关键是您无需运行捆绑软件也无需访问其源代码就可以了解所有这些信息。 集成到Java权限模型中 OSGi框架通过子类化ProtectionDomain将其扩展的权限模型集成到标准Java权限模型中。 每个捆绑软件都为此目的获得一个BundleProtectionDomainImpl 。 这种方法使OSGi可以利用您已经了解的标准Java权限模型因此您可以重用该领域的大多数技能。 您唯一需要重新学习的就是如何编写策略。 权限模型比较 为了使OSGi权限模型更有效请考虑以下比较表该表使用了XACML规范中的术语 权限模型 标准Java OSGi 特效 允许 允许拒绝 目标条件 codeBase已签名 codeBasesignedBy自定义条件 组合算法 先申请 首先适用本地/系统/隐式 从该表中您可以看到OSGi模型比标准Java权限模型更具表现力尽管不如XACML表现力强。 参考 安全软件开发博客上来自我们JCG合作伙伴 Remon Sinnema的OSGi许可 。 翻译自: https://www.javacodegeeks.com/2012/11/permissions-in-osgi.html