idea中使用osgi_OSGi中的权限

idea中使用osgi

在上一篇文章中 ,我们介绍了为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 "* ; o=ACME" ]( ..ServicePermission "..ManagedService" "register" )
} "conditionalExample"

ServicePermission是OSGi定义的权限,用于限制对OSGi服务的访问。

条件是方括号之间的部分。 OSGi定义了两个条件,它们对应于常规Java策略中的signedBycodeBase构造。

您还可以定义自己的条件 。 该规范给出了有关实施条件的详细说明,尤其是有关性能的说明。

不同类型的权限

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,已签名 codeBase,signedBy,自定义条件
组合算法 先申请 首先适用,本地/系统/隐式

从该表中可以看到,OSGi模型比标准Java权限模型更具表现力,尽管不如XACML表现力强。

参考: 安全软件开发博客上来自我们JCG合作伙伴 Remon Sinnema的OSGi许可 。

翻译自: https://www.javacodegeeks.com/2012/11/permissions-in-osgi.html

idea中使用osgi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界末日之后无限法则服务器,《我的世界》全新玩法无限法则上线

完整细致的世界体系,丰富多样的地图,拥有无限探索可能的新世界欢迎你的到来。春节期间,《我的世界》手游全新玩法《无限法则》重磅上线,带大家一同体验无限创造的魅力。冒险家们,一起开启新世界的冒险之旅吧&#xff0…

python风流史

python的创始人为吉多范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承…

将Infinispan版本映射为最低Java版本

我最近一直在与Infinispan交流 ,我注意到这种“分布式内存键/值数据存储”的特征之一是它相对积极地采用,甚至要求更高版本的Java。 根据参考的Infinispan文档 ,以下内容将Infinispan版本映射到最低必需的Java SE版本。 Infinispan版本及其…

python 在不同层级目录import 模块的方法

http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构…

vue-resource ajax跨域,基于Vue-resource jsonp跨域问题的解决方法_婳祎_前端开发者

最近在学习关于什么是jsonp,以及为什么要用jsonp我就不多说了,不明白的同学自行百度一下。我们先来说一下这里我以json数据为例,首先我们通过 $.get可以直接得到一个我们想要的对象,但是用 jsonp 就会出现报错代码如下&#xff0c…

Kali Linux 2016.2初体验

前言 Kali Linux官方于8月30日发布Kali Linux 2016的第二个版本Kali Linux 2016.2。该版本距离Kali Linux 2016.1版本发布,已经有7个月。在这期间,在Kali Linux 2016.2版本发布的这段时间,Kali Linux官方增补了94个更新。 主要的更新大概是这…

ajax servlet增删改查,Servlet ajax 文件上传和JDBC+Servler用户表增删改查

昨天晚上帮一个妹子,应该是大二或者大三的。解决了ServletJDBC实现用户表的增删改查功能,当时妹子遇到的问题是文件上传和日期格式处理不太会。我让她把代码发我,我本地调试,结果发现坑很多,就是很多细节问题。不过对于…

1065 单身狗

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行&#xff…

不,保持警惕不会伤害Java。 关于Java许可的评论。

所以。 Oracle希望通过Java赚钱。 然后,The Register发表了一篇非常对立的文章,上面有一个超级吸引人的标题。 根据他们的消息来源,“ Oracle正在大力加强对其声称违反其许可证的Java客户的审计”。 当Twitter诗句对人们批评甲骨文的行为持批…

移动端ajax,jQuery基于$.ajax设置移动端click超时处理方法

本文实例讲述了jQuery基于$.ajax设置移动端click超时处理方法。分享给大家供大家参考,具体如下:这里介绍jquery click事件如何在移动端自动转换成touchstart事件。因为移动端click事件会比touchstart事件慢几拍移动设备某个元素上事件执行顺序是&#xf…

Python单例模式的4种实现方法

[python] view plaincopy #-*- encodingutf-8 -*- print ----------------------方法1-------------------------- #方法1,实现__new__方法 #并在将一个类的实例绑定到类变量_instance上, #如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回 #如果cl…

java虚拟机-程序计数器PC Register

什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 ;在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现)&#xff0c…

织梦ajax表单提交参数错误,【织梦二次开发】织梦jquery+ajax方式提交自定义表单...

我们在dedecms教程中学到很多,比如可以借助jquery ajax提交dedecms自定义表单到后台。此例只做为参考,实际项目中根据自己的情况酌情修改。html部分:姓名:电话:留言:js部分:function send(){$.a…

R-Tree空间索引算法的研究历程和最新进展分析

摘要:本文介绍了空间索引的概念、R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tree的改进结构——变种R-Tree进行了论述。最后,对R-Tree的最新研究进展进行了分析。 关键词:空间索引技术&#xff1b…

Git同时使用不同平台代码仓库

问题描述 公司项目使用代码仓库为gitinn/gitlab等,个人项目使用github进行托管,而公司项目和个人项目设置的邮箱和用户名是不同的,而ssh的密钥对又是基于这两个信息生成的,所以此时想要同时使用两个平台的代码仓库,则会…

java签署ssl_签署Java代码

java签署ssl在上一篇文章中,我们讨论了如何保护移动代码 。 提到的措施之一是签名代码。 这篇文章探讨了Java程序如何工作。 数字签名 数字签名的基础是密码学 ,特别是公钥密码学 。 我们使用一组加密密钥:私有密钥和公共密钥。 私钥用于…

服务器中有两个R文件夹,一台服务器中配置多个git sshkey

需求背景:GitHub上有两个项目,需要拉取到同一台服务器,并且都需要通过ssh的方式拉取假设两个项目分别叫: proj1 和 proj2一、分别生成 ssh key# 先生成 proj1 的 sshkey$ ssh-keygen -t rsa -C "888888qq.com"image.png…

1-26HashSet简介

Set的特点 Set里面存储的元素不能重复,没有索引,存取顺序不一致。 package com.monkey1024.set;import java.util.HashSet;/*** Set的特点:元素不能重复,没有索引,存取顺序不一致**/ public class HashSetTest01 {publ…

C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题

C 用异常使得可以将正常执行代码和出错处理区别开来。 比如一个栈,其为空时,调用其一个pop 函数,接下来怎么办? 栈本身并不知道该如何处理,需要通知给其调用者(caller),因为只有调用…

适用于Java开发人员的Groovy吗? 认识Gradle,Grails和Spock

Java开发人员最感兴趣的Groovy用例有哪些? 尽管已经存在了一段时间,但是似乎只有Groovy最近才开始使用Groove。 对于某些人来说,它基本上只是另一种深奥的JVM语言,但是由于一些流行的工具可以帮助您使用Java,因此它比…