用于Java的一般声明性授权方案制造技术

技术编号:2841276 阅读:166 留言:0更新日期:2012-04-11 18:40
一种用于为访问软件应用的用户建立安全性和授权策略的方法、系统和程序存储设备,其中,该方法包括:从运行在数据处理器上的、包含XML格式的应用对象描述文档产生至少一个应用对象组;为每个应用对象创建授权策略;向访问控制器发送被选择的应用对象组;以及基于授权策略在部署软件应用时为试图访问所选择的应用对象组的用户建立访问控制参数。该方法还包括:为授权策略指定环境变量;通过修改环境变量的声明性规格说明以及修改在应用对象的属性上定义的约束来改变授权策略;使用同一授权策略分类器实现不同类别的授权策略;以及使用分组参数指定应用对象组。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术的实施例一般涉及软件应用开发,特别是涉及基于Java的安全性和授权软件应用开发系统与方法。
技术介绍
安全性和授权在软件系统的开发、部署和运行中扮演着非常重要的角色。可从美国加利福尼亚州圣塔克拉拉的Sun Microsystems公司获得的Java是用于基于组件的软件与系统的最流行的平台。另外,Java安全性在电子商务企业系统中扮演着关键的角色。安全性特征典型地以即兴(ad-hoc)的方式被内建到应用之中,或者与使用容器管理的认证和授权的企业J2EE(Java2平台企业版)—可从美国加利福尼亚州圣塔克拉拉的Sun Microsystems公司获得—应用集成在一起。这种情况有几个原因。首先,安全性必须由应用的几乎全部组件处理;然而,其在软件开发中的集成不是集中的。第二,缺乏用于开发有粒度的安全性(granular security)的标准易用过程。在J2EE系统中,容器提供了方法级的安全性以及基于角色的访问控制,这对许多情况来说是不够的。总体来说,安全性开发的低级别使得安全性实现僵硬且与应用紧密耦合。Java认证与授权服务(JAAS)是一种Java包,其使得服务能够认证用户和对用户强加访问控制。换言之,JAAS是可用于以下两个目的的一组Java应用程序接口(API)(1)用于用户的认证,以可靠且安全地判定当前是谁在执行Java代码,而无论代码是作为应用、小应用程序(applet)、bean还是小服务程序(servlet)运行;以及(2)用于用户授权,以判定被认证用户是否被允许访问资源(其可以为Java代码或由Java代码访问的某对象/实体),而无论代码是作为应用、小应用程序、bean还是小服务程序运行。典型地,JAAS认证以可插接的方式执行。这允许Java应用保持对底层认证技术的独立性。另外,可在不需要对应用本身进行修改的情况下,插接新的或更新后的技术。Java使用三种类型的防御机制字节码检验器、类加载器以及安全性管理器。在Java1.0版本中,小应用程序在“沙箱”(sandbox)中运行,这限制了小应用程序对它们在其上执行的机器产生影响或从其获取任何敏感信息的能力。因此,不能本地访问任何较多的东西。在Java的较新版本中,小应用程序被允许脱离沙箱,如果运行其的机器基于签名信息允许其这样做的话。为了支持灵活的、细粒度的访问控制,Java1.2版本提供了基于策略的安全性体系结构。该策略由一组用于不同位置的并由不同签名者签名的代码的许可(permission)来定义。许可允许访问某个资源上的某些动作。通常,在策略文件中列举资源名以及它们相关的动作。图1示出了Java中典型的策略文件。在Java2版本中,较早时候由SecurityManager提供的两个功能-即安全性策略的建立和安全性策略的实施-被分开。java.secuiry.Policy抽象类用于建立安全性策略,而Accesscontroller用作安全性实施器。为了向后兼容,SecurityManager类仍旧存在,但它引用AccessController来做出其决策。在java.policy中,许可与代码源(code-source)相关联。因此,其不具有基于用户或角色的许可。图2示出了用于使用AccessController保护Java方法的典型代码。图2所示的示例显示了如何通过在访问资源前调用AccessController来保护资源。AccessController使用应用的当前授权策略来检查所请求的许可。如果策略文件中定义的任何许可暗含了所请求的许可,则方法“checkPermission”命令简单地返回;否则,发起AccessControlException。如上面所提到的,JAAS是一组使服务能够对用户进行认证并强加访问控制的API。JAAS可靠且安全地判定当前是谁在执行Java代码以及其是否被允许这样做。另外,JAAS实现了标准可插接认证模块(PAM)框架的Java技术版本。这允许Java应用保持对底层认证机制的独立性。JAAS包括两个主要组件认证与授权。JAAS将基于主题(subject)的策略添加到Java2版本的安全性模型中。不仅基于CodeSource而且基于执行代码的用户授予许可。为此,首先对用户进行认证。JAAS分发版包含各种LoginModule实现,以便从用户获取用户id和口令。LoginContext使用登录配置文件来判定使用哪个LoginModule进行认证。Subject类用于封装被认证用户的凭证(credential)。一主题可具有多个称为主体(principal)的身份。在JAAS策略文件中,每个授予声明(grant statement)与一主体相关联。对于每个与主题相关联的主体,AccessController从PolicyFile获取许可,并检查任何许可是否暗含着被请求的许可。否则,AccessController启动AccessControlException。图3示出了在JAAS中用于基于主体的授权的典型策略。在J2EE体系结构中,容器用作其所容纳的组件与它们的调用者之间的授权界限。容器建立起调用代码的用户的标识。对被调用组件—EJB(可从美国加利福尼亚州圣塔克拉拉的Sun Microsystems公司获得的Enterprise JavaBeansTM)或web组件—的访问是通过将调用者的安全性属性与访问被调用组件所需的那些安全性属性进行比较来判定的。在声明性(declarative)授权中,部署者(deployer)为J2EE应用建立容器实施的访问控制规则。部署者将应用许可模型—其典型地由应用组合者(application assembler)提供—映射到特定于运行时环境的机制。部署描述器(deployment descriptor)定义安全性角色及其关联的对各种组件的访问权限。部署者向特定调用者分配安全性角色,以便在运行时环境中建立用户的访问权限。例如,部署者可将安全性角色映射到操作环境中主体身份的列表。于是,向以这些身份之一认证的调用者分配由该角色代表的特权。J2EE容器在向组件发出方法调用之前做出访问控制决策。因此,声明性访问控制可以方法的粒度被指定。J2EE容器不在这些访问决策中计入组件的逻辑或状态。为了实现这一点,需要由代码开发者进行编程性授权。组件可使用两种方法来进行细粒度访问控制EJBContext.isCallerInRole(用于EJB组件)和HttpServletRequest.isUserInRole(用于web组件)。组件使用这些方法判定调用者是否已被授予由该组件基于调用参数、组件内部状态或例如运行时参数等其他因素选择的特权。然而,存在着在声明性与编程性授权之间的权衡。声明性授权是由部署者配置的外部访问控制策略,而编程性授权是通过由组件开发者嵌入在应用中的内部策略进行的。内部策略粒度更细,而外部策略更为灵活。另外,外部策略是透明的,而内部策略是掩藏在应用中的。例如,为了提供“雇员仅可访问他们自己的薪酬信息”的授权策略,需要编程性的授权,其不能在未来进行改变(如果需要的话)。另外,JAAS建立在预先本文档来自技高网...

【技术保护点】
一种为访问由任何软件对象和应用表示的资源、数据或代码的用户建立安全性与授权策略的方法,所述方法包括:从运行在数据处理器上的应用对象描述文档产生至少一个应用对象组;为每一所述应用对象组创建授权策略;将被选择的应用对象组发送到访问控制器;以及基于所述授权策略,在部署软件应用时为试图访问所述选择的应用对象的用户建立访问控制参数。

【技术特征摘要】
【国外来华专利技术】US 2004-7-30 10/909,1071.一种为访问由任何软件对象和应用表示的资源、数据或代码的用户建立安全性与授权策略的方法,所述方法包括从运行在数据处理器上的应用对象描述文档产生至少一个应用对象组;为每一所述应用对象组创建授权策略;将被选择的应用对象组发送到访问控制器;以及基于所述授权策略,在部署软件应用时为试图访问所述选择的应用对象的用户建立访问控制参数。2.根据权利要求1的方法,其中,在所述产生步骤中,所述应用对象描述文档包括可扩展标记语言(XML)格式。3.根据权利要求1的方法,还包括为所述授权策略指定环境变量。4.根据权利要求3的方法,还包括通过修改所述环境变量的声明性规格说明以及修改在应用对象的属性上定义的约束,改变所述授权策略。5.根据权利要求1的方法,还包括使用与所述应用对象组相关联的方法与字段参数中的任何一个指定所述应用对象组。6.根据权利要求1的方法,还包括使用所有应用对象组中的预定关系,指定所述应用对象组。7.根据权利要求1的方法,还包括使用将所述应用对象描述文档解析到所述至少一个应用对象组中的预定分组动作,指定所述应用对象组。8.根据权利要求1的方法,还包括使用同一授权策略分类器实现不同类别的授权策略。9.一种控制对软件应用的访问的方法,所述方法包括根据分组参数对所述软件应用中的应用对象进行分组;为访问所述应用对象的各类用户建立用户配置文件;指定包含用于每一所述分组的应用对象的访问控制参数的授权策略;以及在部署所述软件应用时,为试图访问所选择分组应用对象的用户将所述授权策略与所述用户配置文件相匹配。10.根据权利要求9的方法,其中,在所述分组步骤中,所述软件应用包含应用对象描述文档,该文档包含所述应用对象,其中,所述应用对象描述文档包含可扩展标记语言(XML)格式。11.根据权利要求9的方法,还包括为所述授权策略指定环境变量。12.根据权利要求11的方法,还包括通过修改所述环境变量的声明性规格说明以及修改在所述应用对象的属性上定义的约束,改变所述授权策略。13.根据权利要求9的方法,其中,在所述分组步骤中,所述分组参数包括使用与所述应用对象相关联的方法与字段参数中的任何一个指定所述应用对象。14.根据权利要求9的方法,其中,在所述分组步骤中,所述分组参数包括使用所述软件应用中的所有应用对象中的预定关系,指定所述应用对象。15.根据权利要求9的方法,其中,在所述分组步骤中,所述分组参数包括使用将所述软件应用解析到所述至少一个应用对象组中的预定分组动作,指定所述应用对象。16.根据权利要求9的方法,还包括使用同一授权策略分类器实现不同类别的授权策略。17.一种用于为访问软件应用的用户建立安全性和授权策略的系统,所述系统包含用于从运行在数据处理器上的应用对象描述文档产生至少一个应用对象组的装置;用于...

【专利技术属性】
技术研发人员:M比德R古普塔
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1