法律状态公告日
法律状态信息
法律状态
2017-11-10
未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20100428 终止日期:20160927 申请日:20050927
专利权的终止
2010-04-28
授权
授权
2007-03-21
实质审查的生效
实质审查的生效
2006-03-08
公开
公开
1、技术领域
本发明涉及一种计算机应用技术,具体地说是机群管理中的安全技术,或涉及一种基于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的编程技术,分离具体的通用系统管理逻辑和安全逻辑,把认证和授权逻辑从具体的系统管理功能中分离出来,解除每个具体的系统管理功能与认证授权的耦合。
4、具体实施方式
在本发明的方法中,利用JAAS程序的配置文件实现多种认证方法和授权策略从通用系统程序逻辑中的分离,即不把认证和授权的逻辑写入系统程序中,而是把认证和授权的逻辑写入配置文件中,由系统程序读取配置文件,根据配置文件的要求进行相关的认证和授权,解除系统管理逻辑与多种认证和授权逻辑的耦合。
在本发明的方法中,AspectJ程序利用Aspect Oriented Programming的编程技术,分离具体的通用系统管理逻辑和安全逻辑,把认证和授权逻辑从具体的系统管理功能中分离出来,解除每个具体的系统管理功能与认证授权的耦合。
实施例
1)预先为机群中每个结点分别设置不同的标识符,可以是机器名、IP地址等,记做nodeName;
2)机群中管理系统的用户以用户名唯一区分,记做userName
3)利用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)
{
//获得被切入的方法的名字
String methodName
thisJoinPointStaticPart.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实现了通用的管理逻辑和安全逻辑松散耦合,可以实现在通用的管理方法中方便加入授权检查,很好地解决了机群管理系统自身的认证和授权问题。
机译: 一种使用身份验证介质的密码密钥和计算机硬件的固有信息的可变密码密钥类型的认证方法,是一种使用认证介质的信息提供系统,以及授权和授权的方法。设置帐户以使用所提供的信息
机译: 一种方法,网络访问服务器,认证服务器授权计费和计算机程序产品,用于通过服务器网络访问授权消息“认证授权帐户”用户。
机译: 一种方法和网络访问服务器,认证,授权和计费服务器,具有代理功能的计算机程序,用于在网络访问服务器上进行用户认证,授权和计费消息