专利名称:一种基于JAAS和AspectJ的机群管理系统认证和授权的方法
技术领域:
本发明涉及一种计算机应用技术,具体地说是机群管理中的安全技术,或涉及一种基于JAAS和AspectJ的机群管理系统认证和授权的方法。
2、背景技术机群就是通过高性能网络或局部网将一组计算机系统(结点)互联,形成的具有单一系统映像的高性能、高可用、高可扩展性、高性能价格比的计算机机群系统。由于其相对于传统的大型机的高可用性和低价格的优势,用机群构造超级计算机或超级服务器成为一种流行的趋势。但是机群系统结构松散、结点独立性强、网络连接复杂,并且,随着结点数的增加,对机群的管理和维护变的越来越困难,增加了系统的总拥有成本。
为了管理和维护机群系统,目前流行的方式是在各结点机的操作系统之上再建一层操作系统软件来管理整个机群,称之为机群操作系统或者叫做机群管理系统。机群管理系统是机群系统软件的一部分,几乎处于系统软件的最顶层,它对整个机群的软、硬件起到管理的作用,为机群的系统管理员和最终用户提供服务。机群系统的一个基本特点是“整个系统呈现给用户的是单一系统的映像”,机群管理为这一目标的实现应提供在单一控制台上包括对机群的规划、安装、配置、监控、日常维护、开机关机等管理系统全过程的控制支持。机群管理系统应提供一套多功能、易使用、可扩展的实用化管理工具,帮助管理员监控整个机群的工作状态,保证机群系统高效、稳定的运行。
由于管理系统能够管理整个机群的软、硬件资源,在提供了管理系统方便性的同时,也增加了系统安全方面的风险,如果没有用户认证和授权的管理机制,管理系统的用户可以任意操作系统的资源,给系统的安全带来损害。机群的管理功能异常丰富,管理命令多达上百个,同时根据用户的要求,可能随时添加新的管理功能,新的认证方法,改变不同用户在不同结点上的权限,这些要求对于管理系统认证和授权的灵活性是一项非常大的挑战。
3、发明内容对于目前机群管理中存在关于认证和授权的方法与管理功能紧密耦合的问题,对于管理系统的功能的开发与认证和授权的功能交织在一起的问题,开发管理功能的人员需要在自己的代码中嵌入认证和授权的逻辑,并且由于机群的结点独立的特殊性,每个管理命令在不同的结点上可能有不同的权限问题。针对上述问题,本发明提出以java语言开发的一种基于JAAS和AspectJ的机群管理系统中认证和授权的方法,该方法可以利用JAAS和AspectJ的技术特性,不需要在普通的管理命令中嵌入认证和授权代码,就可以实现方法级别和结点级别的认证和访问控制,实现了管理系统的业务逻辑与安全逻辑的松散耦合,简化了管理系统的开发复杂性、提供了更加灵活的安全需求。
本发明的目的提一种基于JAAS(Java Authentication AuthorizationService)和AspectJ的机群管理系统中认证和授权的方法,该方法可以利用JAAS和AspectJ特性,不需要在通常的管理命令中嵌入认证和授权代码,就可以实现方法级别和结点级别的认证和访问控制,实现了管理系统的业务逻辑与安全逻辑的松散耦合。
通过JAAS程序和AspectJ程序相互配合把认证和授权的逻辑从系统程序中分离出来,并利用JAAS程序的配置文件配置用户认证和授权信息,以及利用AspectJ程序编译器把授权逻辑和机群管理系统的通用逻辑交织在一起对用户进行认证和授权,该方法包括以下步骤a、JAAS程序为机群系统中的每个结点分别设置不同的标识符,然后以机群系统中结点为单位区分被访问的系统资源;b、JAAS程序为机群管理系统设定用户是以用户名为唯一被区分认证的实体,通过调用机群管理系统的软件对用户进行区分认证;c、利用JAAS程序的用户认证信息和授权信息可配置性,将用户的认证和授权逻辑变化从通用的管理系统的逻辑中分离出来;d、利用AspectJ程序的编译技术把授权检查注入到通用的业务方法中,利用结点标识、用户标识和切入方法名称信息完成对切入方法的执行权限检查。
JAAS程序还利用以机群系统中若干结点组成的结点组为资源单位标识对资源进行区分。
利用JAAS程序的配置文件配置用户在不同结点执行不同的管理功能对用户进行认证和授权,比如添加/删除用户、开机/关机、网络配置等手段对用户进行认证和授权。
JAAS程序利用用户登录的上下文、结点名称、方法名称,检查不同用户在不同结点上执行不同操作的权限对用户进行认证和授权。
利用JAAS程序的配置文件实现多种认证方法和授权策略从通用系统程序逻辑中的分离,即不把认证和授权的逻辑写入系统程序中,而是把认证和授权的逻辑写入配置文件中,由系统程序读取配置文件,根据配置文件的要求进行相关的认证和授权,解除系统管理逻辑与多种认证和授权逻辑的耦合。
AspectJ程序利用Aspect Oriented Programming的编程技术,分离具体的通用系统管理逻辑和安全逻辑,把认证和授权逻辑从具体的系统管理功能中分离出来,解除每个具体的系统管理功能与认证授权的耦合。
具体实施方式
在本发明的方法中,利用JAAS程序的配置文件实现多种认证方法和授权策略从通用系统程序逻辑中的分离,即不把认证和授权的逻辑写入系统程序中,而是把认证和授权的逻辑写入配置文件中,由系统程序读取配置文件,根据配置文件的要求进行相关的认证和授权,解除系统管理逻辑与多种认证和授权逻辑的耦合。
在本发明的方法中,AspectJ程序利用Aspect Oriented Programming的编程技术,分离具体的通用系统管理逻辑和安全逻辑,把认证和授权逻辑从具体的系统管理功能中分离出来,解除每个具体的系统管理功能与认证授权的耦合。
实施例1)预先为机群中每个结点分别设置不同的标识符,可以是机器名、IP地址等,记做nodeName;2)机群中管理系统的用户以用户名唯一区分,记做userName3)利用JAAS,实现认证和授权的灵活配置,认证,通过核对用户口令确认用户是否合法用户;授权,确认用户是否可以进行相关操作;具体配置如下a、配置用户认证文件,文件中指明登录用到的LoginModule类名,该类用于完成用户的认证工作,该文件的配置符合JAAS的策略定义文件格式;如MySecurity{MyLoginModule required;};该配置文件定义了用MyLoginModule负责认证用户身份,该类可以使用各种认证用户的方法,去检验是否用户可以被认证。
b、配置用户操作权限文件,形式如下grant MyPrincipal″User1″{
permission NodePermission″nodeName1″;permission NodePermission″nodeName2″;permission MethodPermission″void shutDown(String,LoginContext)″;permission MethodPermission″void addUser(String,LoginContext)″;};该文件通过JAAS提供的策略文件,实现了针对不同用户(如User1),在不同结点上(如nodeName1),进行不同操作(如shutDown)的目的。如以上从策略文件定义了用户User1可以在nodeName1和nodeName2上执行shutDwon(关机命令)。shutDown(String,LoginContext)中的String类型的参数是结点的名称,如nodeName1,LoginContext类型的参数处是登录用户的登录上下文,用于保存用户的身份信息。
4)利用AspectJ方面定义和AspectJ编译器,把认证和授权逻辑从普通的管理系统逻辑分离出来,具体步骤如下a、定义切入点MyAuthorization,该MyAuthorization定义为public aspect MyAuthorization{//定义切入点;node为操作的结点的名称,lc为用户登录的上下文环境,用于区分用户pointcut Authorization(String node,LoginContextlc)(args(node,lc)&&execution(**(..));//在切入的方法执行之前执行以下程序片断before(String node,LoginContext lc)Authorization(node,lc){//获得被切入的方法的名字StringmethodNamethisJoinPointStaticPart.getSignature().toString();//根据用户登录环境、结点名和方法名,进行权限检查String methodName=
thisJoinPointStaticPart.getSignature().toString();Subject.doAsPrivileged(lc.getSubject(),newAuthPrivilegedAction(node,methodName));}}以上示例代码,pointcut Authorization处代码实现了切入方法的定义,before(String node,LoginContext lc)处定义了在执行切入的方法之前进行Subject.doAsPrivileged动作,根据用户、结点和方法名验证是否可以执行该方法。
b、把该MyAuthorization和相关的通用的业务逻辑类利用AspectJ编译器编译,把认证逻辑交织到通用的业务逻辑中去。
利用AspectJ的横切技术,由a和b两步,我们不必在具体的业务逻辑中如shutDown方法中嵌入Subject.doAsPrivileged(lc.getSubject(),newAuthPrivilegedAction(node,methodName))这样的授权代码,可以通过定义aspect MyAuthorization指明我们要切入的方法的名称,把授权逻辑利用AspectJ编译器注入到需要进行授权逻辑的方法中。
前提条件是,被注入方法的参数中要包含String类型的结点的名称,用来传入结点名称,检查是否有在该结点上执行方法的权限;LoginContext类型的参数用来传递给授权检查函数给出用户登录的上下文环境。
由本发明的技术方案可见,本发明利用JAAS和AspectJ技术实现了一种针对机群管理系统的认证和授权方法。该方法利用JAAS实现认证和授权的在方法级别和结点级别安全性的灵活配置。利用AspectJ实现了通用的管理逻辑和安全逻辑松散耦合,可以实现在通用的管理方法中方便加入授权检查,很好地解决了机群管理系统自身的认证和授权问题。
权利要求
1.一种基于JAAS和AspectJ程序的机群管理系统认证和授权的方法,其特征在于通过JAAS程序和AspectJ程序相互配合把认证和授权的逻辑从系统程序中分离出来,并利用JAAS程序的配置文件配置用户认证和授权信息,以及利用AspectJ程序编译器把授权逻辑和机群管理系统的通用逻辑交织在一起对用户进行认证和授权,该方法包括以下步骤a、JAAS程序为机群系统中的每个结点分别设置不同的标识符,然后以机群系统中结点为单位区分被访问的系统资源;b、JAAS程序为机群管理系统设定用户是以用户名为唯一被区分认证的实体,通过调用机群管理系统的软件对用户进行区分认证;c、利用JAAS程序的用户认证信息和授权信息可配置性,将用户的认证和授权逻辑变化从通用的管理系统的逻辑中分离出来;d、利用AspectJ程序的编译技术把授权检查注入到通用的业务方法中,利用结点标识、用户标识和切入方法名称信息完成对切入方法的执行权限检查。
2.如权利要求1所述的认证和授权方法,其其特征在于JAAS程序还利用以机群系统中若干结点组成的结点组为资源单位标识对资源进行区分。
3.如权利要求1所述的认证和授权方法,其特征在于利用JAAS程序的配置文件配置用户在不同结点执行不同的管理功能对用户进行认证和授权,比如添加/删除用户、开机/关机、网络配置等手段对用户进行认证和授权。
4.如权利要求1所述的认证和授权方法,其特征在于JAAS程序利用用户登录的上下文、结点名称、方法名称,检查不同用户在不同结点上执行不同操作的权限对用户进行认证和授权。
5.如权利要求1所述的认证和授权方法,其特征在于利用JAAS程序的配置文件实现多种认证方法和授权策略从通用系统程序逻辑中的分离,即不把认证和授权的逻辑写入系统程序中,而是把认证和授权的逻辑写入配置文件中,由系统程序读取配置文件,根据配置文件的要求进行相关的认证和授权,解除系统管理逻辑与多种认证和授权逻辑的耦合。
6.如权利要求1所述的认证和授权方法,其特征在于AspectJ程序利用Aspect Oriented Programming的编程技术,分离具体的通用系统管理逻辑和安全逻辑,把认证和授权逻辑从具体的系统管理功能中分离出来,解除每个具体的系统管理功能与认证授权的耦合。
全文摘要
本发明提供一种基于JAAS和AspectJ程序的机群管理系统认证和授权的方法。JAAS程序把认证和授权的逻辑从系统程序中分离出来,利用AspectJ程序编译器把授权逻辑和机群管理系统的通用逻辑交织在一起,然后利用JAAS程序的配置文件配置用户登录对用户进行认证和授权,该方法利用JAAS和AspectJ程序相互配合实现了机群中方法级别和结点级别的认证和授权方法,通过该方法可以提供灵活、方便的指定不同的用户在不同的结点上执行不同的操作的机制。该方法把安全逻辑从通用的机群管理系统的管理逻辑中分离出来,实现灵活地配置认证方法和授权策略,使得通用管理系统功能的开发和安全机制的开发独立进行,简洁、高效的解决了管理系统软件自身的安全问题。
文档编号H04L12/24GK1744599SQ20051004482
公开日2006年3月8日 申请日期2005年9月27日 优先权日2005年9月27日
发明者李景山, 邓必山, 王守昊, 董小社, 伍卫国 申请人:浪潮电子信息产业股份有限公司, 西安交通大学