一种鉴权方法及装置与流程

文档序号:14836188发布日期:2018-06-30 12:30阅读:131来源:国知局
一种鉴权方法及装置与流程
本发明涉及访问权限管理
技术领域
,特别涉及一种鉴权方法及装置。
背景技术
:随着计算机网络技术的迅猛发展和网络应用的迅速增加,网络已经渗透到人们的生活的方方面面,成为人们日常生活中不可或缺的一部分。在人们享受着网络带来的便捷的同时,信息安全问题也日益突出。信息安全的重要内容是鉴权,现有的鉴权方法是基于ACL(AccessControlList,访问控制列表)机制的鉴权方法,在该方法中,ACL表包括了至少一条策略,每条策略记录了用户的标识信息、服务与鉴权结果的关联关系,当接收到用户的请求后,用户的请求中包含待鉴权的服务与用户的标识信息,将该请求与ACL表进行匹配,确定请求是否通过鉴权。在这种鉴权方法中,可以对ACL表中的策略进行修改,但还需要经过一系列复杂的操作才能实现对策略的修改。技术实现要素:本发明实施例的目的在于提供一种鉴权方法及装置,以实现比较便捷地对策略进行修改。为达到上述目的,本发明实施例公开了一种鉴权方法,应用于网页服务器,所述方法包括:获取用户请求,所述用户请求中包含:用户标识信息和请求参数;根据所述用户标识信息,获得所述用户预先绑定的第一策略文档;根据所述第一策略文档,确定本次请求对应的待匹配策略;将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果;根据匹配结果,确定该请求是否通过鉴权。较佳的,所述请求参数包括:服务标识信息、区域标识信息、账户信息、所述服务标识信息对应的第一接口标识信息和该服务的具体参数;所述第一策略文档包括至少一条策略,每条策略包括:权限标识信息、接口标识信息和条件参数;所述条件参数包括:服务标识信息、区域标识信息、账户信息及该服务的具体参数。较佳的,所述第一策略文档中包括的策略均是拒绝策略;所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数未与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述第一策略文档中包括的策略均是授权策略;所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述第一策略文档包括至少一条拒绝和/或授权的策略;所述待匹配策略中包括至少一条拒绝的策略和/或一条授权的策略;所述将所述请求参数与所述每条待匹配策略进行匹配的步骤,包括:将所述请求参数与所述待匹配策略中的每条拒绝的策略和/或授权的策略进行匹配;所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,或未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述每条策略中的条件参数按预设格式存储;在所述将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果的步骤之前,还包括:将所述请求参数封装为所述预设格式。较佳的,所述将所述请求参数封装为所述预设格式的步骤,包括:由抽象工厂根据所述请求参数中包含的服务标识信息,获得与所述服务标识信息对应预设的具体工厂;由所述具体工厂,将所述请求参数封装为所述预设格式。较佳的,所述根据所述第一策略文档,确定本次请求对应的待匹配策略的步骤,包括:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,从所有的策略中确定待匹配策略。较佳的,所述从所有的策略中确定待匹配策略的步骤,包括:将提取的所有的策略确定为待匹配策略;或,将接口标识信息满足目标接口标识信息、且权限标识相同的至少两条策略进行合并,将合并后的策略确定为待匹配策略。较佳的,所述第一策略文档进行解析的步骤,包括:读取所述第一策略文档,确定所述第一策略文档中权限标识信息、接口标识信息和条件参数的数据类型;根据确定的数据类型及所述第一策略文档,获取所述第一策略文档中的所述权限标识信息、所述接口标识信息和所述条件参数并进行存储;或由语法分析器读取所述第一策略文档,获取权限标识信息、接口标识信息和条件参数并进行存储。为达到上述目的,本发明实施例公开了一种鉴权装置,应用于网页服务器,所述装置包括:获取模块,用于获取用户请求,所述用户请求中包含:用户标识信息和请求参数;第一获得模块,用于根据所述用户标识信息,获得所述用户预先绑定的第一策略文档;第一确定模块,用于根据所述第一策略文档,确定本次请求对应的待匹配策略;第二获得模块,用于将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果;第二确定模块,用于根据匹配结果,确定该请求是否通过鉴权。较佳的,所述请求参数包括:服务标识信息、区域标识信息、账户信息、所述服务标识信息对应的第一接口标识信息和该服务的具体参数;所述第一策略文档包括至少一条策略,每条策略包括:权限标识信息、接口标识信息和条件参数;所述条件参数包括:服务标识信息、区域标识信息、账户信息和该服务的具体参数。较佳的,所述第一策略文档中包括的策略均是拒绝策略;所述第二确定模块,用于若所述请求参数未与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述第一策略文档中包括的策略均是授权策略;所述第二确定模块,用于若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述第一策略文档包括至少一条拒绝和/或授权的策略;所述待匹配策略中包括至少一条拒绝的策略和/或一条授权的策略;所述第二获得模块,具体用于:将所述请求参数与所述待匹配策略中的每条拒绝的策略和/或授权的策略进行匹配;所述第二确定模块,具体用于:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,或未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。较佳的,所述每条策略中的条件参数按预设格式存储;所述装置还包括:封装模块,用于将所述请求参数封装为所述预设格式。较佳的,所述封装模块,具体用于:根据所述请求参数中包含的服务标识信息,获得与所述服务标识信息对应预设的具体工厂;由所述具体工厂,将所述请求参数封装为所述预设格式。较佳的,所述第一确定模块,具体用于:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,从所有的策略中确定待匹配策略。较佳的,所述第一确定模块,具体用于:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,将提取的所有的策略确定为待匹配策略;或,将接口标识信息满足所述目标接口标识信息、且权限标识相同的至少两条策略进行合并,将合并后的策略确定为待匹配策略。较佳的,所述第一确定模块,还具体用于:读取所述第一策略文档,确定所述第一策略文档中权限标识信息、接口标识信息和条件参数的数据类型;根据确定的数据类型及所述第一策略文档,获取所述第一策略文档中的所述权限标识信息、所述接口标识信息和所述条件参数并进行存储;或由语法分析器读取所述第一策略文档,获取权限标识信息、接口标识信息和条件参数并进行存储。由上述技术方案可见,本发明实施例提供了一种鉴权方法及装置,方法包括获取用户请求,所述用户请求中包含:用户标识信息和请求参数;根据所述用户标识信息,获得所述用户预先绑定的第一策略文档;根据所述第一策略文档,确定本次请求对应的待匹配策略;将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果;根据匹配结果,确定该请求是否通过鉴权。应用本发明实施例,可以通过修改第一策略文档实现对策略的修改,由于采用文档形式记录策略,所以修改策略时,只修改策略文档即可,不需要进行其他的操作,相较于现有技术,实现了比较便捷地对策略进行修改,另外,在本发明其他实施例中,策略文档中的策略包括:权限标识信息、接口标识信息和条件参数,条件参数服务标识信息、区域标识信息、账户信息和该服务的具体参数,因此,在鉴权的过程中需要匹配多种信息,与现有技术相比,还实现了细粒度鉴权。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供鉴权方法的一种流程示意图;图2为本发明实施例中校验器对策略文档进行校验的过程示意图;图3为本发明实施例中带有策略合并的鉴权的过程示意图;图4为本发明实施例提供的鉴权方法的另一种流程示意图;图5为本发明实施例中抽象工厂模式的具体类图;图6为本发明实施例提供鉴权装置的一种结构示意图;图7为本发明实施例提供鉴权装置的另一种结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了解决现有技术问题,本发明实施例提供了一种鉴权方法及装置。下面首先对本发明实施例所提供的一种鉴权方法进行介绍。需要说明的是,本发明实施例优选应用于网页服务器,网页服务器可以理解为运行网页的服务器。图1为本发明实施例提供鉴权方法的一种流程示意图,方法包括:S101:获取用户请求,所述用户请求中包含:用户标识信息和请求参数。具体的,请求参数包括:服务标识信息、区域标识信息、账户信息、所述服务标识信息对应的第一接口标识信息及该服务的具体参数。在实际应用中,如果用户请求中没有包含用户标识信息和请求参数,则网页服务器则不会利用该用户请求参与鉴权,即可以理解为如果用户请求没有包含用户标识信息和请求参数,则会自动过滤掉该用户请求。在实际应用中,服务标识信息可以为服务的名称,示例性的,服务的名称可以为iam(IdentityandAccessManagement,身份识别与访问管理);区域标识信息是表明用户来自哪个区域,示例性的,区域标识信息可以为us(美国)-east(东部)-1,即表明该用户位于美国东部第一个机房,服务标识信息对应的第一接口标识信息可以为接口的名称,示例性的,接口的名称可以为RunInstances(运行实例)。S102:根据所述用户标识信息,获得所述用户预先绑定的第一策略文档。具体的,所述第一策略文档包括至少一条策略,每条策略包括:权限标识信息、接口标识信息和条件参数;所述条件参数包括:服务标识信息、区域标识信息、账户信息和该服务的具体参数。在本发明实施例中,第一策略文档中可以包括的策略均是拒绝策略,还可以包括的策略均是授权策略,当然第一策略文档中还包括至少一条拒绝的策略和/或一条授权的策略。具体的,每条策略中的条件参数按预设格式存储,例如:KRN(KingsoftResourceName,金山资源名称)格式。需要说明的是,预设格式是预先设置的,用户需要按照预设格式将相应的内容存储在第一策略文档中,具体的,KRN的格式可以为krn:ksc:{service}:{region}:{account}:{resource_type}/{resource_name}。在KRN格式中,krn和ksc是默认前缀,默认前缀可以理解为识别标识,用于区别服务的提供商。在实际应用中,用户标识信息与第一策略文档具有对应关系,该对应关系可以如表1所示。用户的标识信息策略文档用户A策略文档1用户B策略文档2用户C策略文档3假设,用户标识信息是用户A,根据表1中的对应关系,可以确定用户预先绑定的第一策略文档是策略文档1。用户标识信息可以为用户的名称、也可以为用户的ID(Identification,身份识别),当然,也可以是其他的,在这里不进行一一列举。该第一策略文档是用户自定义的,用户可以根据自身的需求编写该第一策略文档。使用第一策略文档进行鉴权,使得本发明实施例提供的方法后期可维护性比较好。该第一策略文档除了包含至少一条策略外,还可以包含版本信息、声明等信息,需要说明的是,在实际应用中,接口标识信息中可以包括服务标识信息和接口名称。在本发明实施例中,用户可以随时修改第一策略文档,版本信息可以标记和记录所有变更历史。在实际应用中,可以以日期标识版本信息,例如,版本信息可以为2015-11-01,表明该版本是2015年11月1日的版本。如果预先存储了该多个策略文档,这些策略文档的版本信息均不相同,根据用户标识信息,获得的第一策略文档可以是这些策略文档中最新版本的策略文档,当然,第一策略文档也可以是用户预先确定的版本对应的策略文档。在实际应用中,策略中的接口标识信息和条件参数中可以包含通配符,通配符是一类键盘字符。在本发明实施例中,通配符可以为常见的“*”或“?”等,通配符*代表了0个或多个任意字符,通配符?可以代替一个字符。用户预先绑定的第一策略文档是网页服务器校验合法的策略文档,网页服务器在获取到策略文档后,调用校验器对策略文档进行校验。具体的,校验器对策略文档进行校验的过程如图2所示。校验器获取到用户的策略文档后,校验该策略文档是否合法,即校验该策略文档中的语法和词法是否符合预先设置的语法规则和词法规则,如果合法,则将该策略文档存储在数据库中,数据库通过校验器向用户校验合法,且已经存储的消息,具体的,数据库向校验器发送已存储的消息,校验器在接收到数据库发送的消息后,向用户发送校验合法并已经存储的校验结果。如果校验的结果为不合法,向用户发送不合法的校验结果,用户基于校验结果对策略文档进行修改。在实际应用中,校验器在向用户发送不合法的校验结果时,同时会通知用户哪些地方校验没通过,具体可以参考程序采用编译器检查语法和词法的方法。需要说明的是,将用户的策略文档存储进数据库,该策略文档是用户预先绑定的策略文档,如果只存储了该用户的一个策略文档,则该策略文档是用户预先绑定的第一策略文档,如果存储了该用户的多个策略文档,则存储的其中一个策略文档是用户预先绑定的第一策略文档。在实际应用中,语法规则可以为:数据由逗号隔开,属性值必须加引号等等,语法规则根据策略文档所使用的语言不同而不同,每一种语言都有其特定的语法规则,例如,JSON(JavaScriptObjectNotation)语言中,对象要保存在花括号中可以为JSON语言其中的一个语法规则,XML(ExtensibleMarkupLanguage,可扩展标识语言)中,属性值必须加引号可以为XML语言其中的一个语法规则。需要说明的是,第一策略文档使用的语言可以称之为策略语言。示例性的,以对象要保存在花括号中这一语法规则为例进行说明。如果策略文档中出现了["firstName":"John","lastName":"Doe"],这个不符合预先设置的语法规则,则校验结果为不合法,则向用户发送不合法的校验结果。在其他的语句符合语法规则的情况下,用户将策略文档中的["firstName":"John","lastName":"Doe"]修改为{"firstName":"John","lastName":"Doe"},将该修改后的策略文档发送给网页服务器,则校验器对修改后的策略文档进行校验,校验结果为合法。在实际应用中,词法规则可以是现有的词法规则,也可以是自身定义的词法规则,词法规则有很多种,例如,词法规则可以为标识符是由大小写字母,数字字符和下划线组成的,并以字母和下划线开头的字符集合。标识符是程序员用来命名程序中一些实体的一种单词。如果在策略文档中存在“$XY,m”这样的标识符,不符合词法规则,则校验的结果为不合法,通知用户该处没有校验通过,用户对该策略文档进行修改,将标识符“$XY,m”修改为“XYm”,校验器接收修改后的策略文档,进行校验,校验结果为合法,将该策略文档存储到数据库中。在实际应用中,校验器可以为JSON解析器,JSON解析器根据预先设置的语法规则和词法规则,对策略文档中的每一个元素进行校验。校验器还可以为语法分析器,作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构),在具体应用中,可以采用Antlr,Antlr是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。需要说明的是,采用JSON解析器对策略文档进行校验逻辑比较复杂,性能消耗比较大,而采用语法分析器对策略文档进行校验逻辑比较清晰,性能消耗比较小。需要说明的是,如果根据用户标识信息,没有获得用户预先绑定的第一策略文档,则鉴权结果为不通过。在本发明实施例中,第一策略文档是用户自定义的,用户可以对第一策略文档中的策略进行修改,网页服务器会校验修改后的第一策略文档是否合法,只要修改后的第一策略校验合法,即完成了对策略的修改,相较于现有技术,不需进行复杂的操作,能够便捷地对策略进行修改。S103:根据所述第一策略文档,确定本次请求对应的待匹配策略。具体的,所述根据所述第一策略文档,确定本次请求对应的待匹配策略的步骤,包括:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,从所有的策略中确定待匹配策略。需要说明的是,对第一策略文档进行解析可以理解为将每条策略中的权限标识信息、接口标识信息和条件参数可以认为是解析对象,获取解析对象,并对解析对象进行存储。进一步的,对所述第一策略文档进行解析的步骤,包括:读取所述第一策略文档,确定所述第一策略文档中权限标识信息、接口标识信息和条件参数的数据类型;根据确定的数据类型及所述第一策略文档,获取所述第一策略文档中的所述权限标识信息、所述接口标识信息和所述条件参数并进行存储;或,由语法分析器读取所述第一策略文档,获取所述权限标识信息、所述接口标识信息和所述条件参数并进行存储。本领域技术人员可以理解的是,在解析的过程中,解析对象是权限标识信息、接口标识信息和条件参数,首先需要读取第一策略文档,然后确定解析对象的数据类型,数据类型可以分为数值类型和字符类型,数值类型还可以分为整型和浮点型,不同的数据类型占用存储空间的大小不同,因此,需要确定解析对象的数据类型。在实际应用中,网页服务器根据确定的数据类型,为权限标识信息、接口标识信息和条件参数分配存储空间,进而,可以从第一策略文档中获取权限标识信息、接口标识信息和条件参数,将获取到的这些信息存储到相应的存储空间中。需要说明的是,这里所说的存储空间是解析后的第一策略文档中的存储空间。在本发明实施例中,网页服务器还可以调用语法分析器对第一策略文档进行解析,因为语法分析器中预先设置了解析对象的数据类型,所以不需要判断权限标识信息、接口标识信息和条件参数的数据类型,语法分析器读取第一策略文档中的权限标识信息、接口标识信息和条件参数,将获取到的这些信息存储到相应的存储空间中。需要说明的是,这里所说的存储空间是解析后的第一策略文档中的存储空间。需要说明的是,本发明实施例中提供的第一种第一策略文档解析方法可以通过修改了解析对象的开源解析代码实现,解析的详细过程是现有技术,在这里不进行赘述;本发明实施例中提供的第二种第一策略文档解析方法可以通过修改了解析对象的开源语法分析器实现,解析的详细过程是现有技术,在这里不进行赘述。需要说明的是,第一策略文档中包含的策略的数量与解析后的第一策略文档中包含的策略的数量相同。下面通过具体实例,对本发明实施例第一策略文档和解析后的第一策略文档进行说明。示例性的,KRN格式的第一策略文档为:其中,该第一策略文档中的Version(版本)表示该策略文档片段是2015年11月1日的版本,Effect(结果)代表权限标识信息,Action(功能)代表接口标识信息,Resource(资源)代表条件参数。该第一策略文档包含了两个策略,第一个策略的权限标识信息为Allow(允许),接口标识信息为iam(IdentityandAccessManagement,身份识别与访问管理)服务的ListUsers(用户列表)接口,条件参数中服务标识信息是iam,区域标识信息为空,账户信息是123456,服务的具体参数为user(用户)/*。第一个策略表示允许用户调用iam服务的ListUsers接口,并且调用时,该用户必须满足上述条件参数。需要说明的是,区域标识信息为空,说明在用户满足其他条件情况下,不管该用户位于哪一个区域,还用户均可以调用iam服务的ListUsers接口。第二个策略的权限标识信息为Allow,接口标识信息为VPC(VirtualPrivateCloud,虚拟私有云)服务的Create(创建)*接口,条件参数为空,第二个策略表示允许任意用户调用VPC服务中接口名称以Create(创建)开头的接口。Create*表示一类接口,这一类接口为接口名称开头是Create的接口,示例性,可以为Create和Created(创造)等等。对上述第一策略文档进行解析,解析后的第一策略文档为:Effect=AllowAction=iam:ListUsersResource=krn:ksc:iam::123456:user/*Effect=AllowAction=vpc:Create*Resource=*。具体的,所述从所有的策略中确定待匹配策略的步骤,包括:将提取的所有的策略确定为待匹配策略;或,将接口标识信息满足目标接口标识信息、且权限标识相同的至少两条策略进行合并,将合并后的策略确定为待匹配策略。在实际应用中,提取解析后的第一策略文档中的所有的策略,对提取的策略进行封装,将封装后的策略确定为待匹配策略。具体的,对提取的策略进行封装的方法为:定义策略类,权限标识信息、接口标识信息和条件参数是属性,将策略类的属性私有化同时为其提供公开的getter(获得)和setter(设置)方法。这样就可以实现对策略的封装。这里所说的类实际上是对某种类型的对象定义变量和方法的原型,类就相当于一个模板,依照此模板生产产品。属性就是对于一个对象的抽象刻画。需要说明的是,具体对提取的策略进行封装是现有技术,现有技术中有多种封装方法在,则这里不进行一一赘述。示例性的,封装后的第一个策略可以为:{Allow,iam:ListUsers,krn:ksc:iam::123456:user/*}。在实际应用中,服务的提供者可以称之为服务提供商,服务提供商可以随时修改自身的鉴权规则。网页服务器通过插件,支持服务提供商动态配置的鉴权规则,网页服务器接收服务提供商的鉴权规则,根据服务提供商的鉴权规则,对待匹配策略中的权限标识信息进行修改,示例性的,根据服务提供商的鉴权规则,将待匹配策略1中的权限标识信息从Allow修改为Deny(拒绝)。为了防止与服务提供方提供的鉴权规则存在冲突,在本发明实施例中,需要将接口标识信息满足目标接口标识信息、且权限标识相同的至少两条策略进行合并。示例性的,解析后的第一策略文档中包含了以下两个策略:Effect=AllowAction=kec:RunInstancesResource=krn:ksc:kec:cn-beijing-1:123456:image/*Effect=AllowAction=kec:Run*Resource=krn:ksc:kec:cn-beijing-1:123456:security-group/*。解析后的第一策略文档中的第一个策略的权限标识信息为Allow,接口标识信息为kec(kingsoftelasticcompute,金山云服务器)服务的RunInstances接口,条件参数中服务标识信息是kec,区域标识信息为cn(China,中国)-beijing(北京)-1,账户信息是123456,服务的具体参数为image(图像)/*。第一个策略表示允许用户调用kec服务的RunInstances接口,并且调用时,该用户必须满足上述条件参数。第一个策略的权限标识信息为Allow,接口标识信息为kec服务中接口名称以Run(运行)开头的接口,条件参数中服务标识信息是kec,区域标识信息为cn(China,中国)-beijing(北京)-1,账户信息是123456,服务的具体参数为security(安全)-group(组)/。第二个策略表示允许用户调用kec服务的Run*接口,并且调用时,该用户必须满足上述条件参数。上述所说的目标接口标识信息为Run*,当然也可以为Ru*等等,目标接口标识信息,需要满足的条件是包含需要合并的策略中的接口标识信息,目标接口标识信息可以与待合并的策略中包含的接口数量最多的接口标识信息相同,目标接口标识信息包含的接口数量也可以多于待合并的策略中接口标识信息中包含的接口数量。在目标接口标识信息为Run*的情况下,上述两个策略中权限标识信息相同,接口标识信息均包含在目标接口标识信息中,第二个策略中的接口标识信息包含了第一个策略中的接口标识信息,即两个策略的接口标识信息中的服务相同,第一个策略中的接口是一个具体的接口:RunInstances接口;第二个策略中的接口是一类接口,是接口名称以Run开头的接口,以接口名称以Run开头的这一类接口包含了RunInstances接口,所以需要将第一个策略和第二个策略进行合并,第一个策略和第二个策略合并后为:Effect=AllowAction=kec:RunInstancesResource=krn:ksc:kec:cn-beijing-1:123456:image/*krn:ksc:kec:cn-beijing-1:123456:security-group/*;Effect=AllowAction=kec:Run*Resource=krn:ksc:kec:cn-beijing-1:123456:security-group/*。根据上述合并后的结果,可以看出,第一个策略发生改变,第二个策略没有发生改变,合并后的第一个策略的权限标识信息及接口标识信息与合并前的第一个策略相同,第一个条件参数与合并前的第一个策略的条件参数相同,第二个条件参数与合并前的第二个策略的条件参数相同。如果第一策略文档存在满足合并条件的策略进行合并,将合并后的策略确定为待匹配策略,即将上述第一个策略和第二个策略确定为待匹配策略。将接口标识信息满足目标接口标识信息、且权限标识相同的至少两条策略进行合并,还包含了一种情况,至少两条策略的接口标识信息满足目标接口标识信息且相同,权限标识相同,则进行合并。示例性的,解析后的第一策略文档中包含了以下两个策略:Effect=AllowAction=kec:RunInstancesResource=krn:ksc:kec:cn-beijing-1:123456:image/*;Effect=AllowAction=kec:RunInstancesResource=krn:ksc:kec:cn-beijing-1:123456:security-group/*。根据上述所说的合并条件,这两个策略进行合并后的结果为:Effect=AllowAction=kec:RunInstancesResource=krn:ksc:kec:cn-beijing-1:123456:image/*krn:ksc:kec:cn-beijing-1:123456:security-group/*。合并后的策略的权限标识信息及接口标识信息与合并前的第一个策略和第第二个策略相同,一个条件参数与合并前的第一个策略的条件参数相同,第二个条件参数与合并前的第二个策略的条件参数相同。在实际应用中,提取解析后的第一策略文档所有的策略,将提取的策略进行封装,判断封装后的策略是否需要合并,如果不需要,则将封装后的每一策略确定为匹配策略,如果需要,将封装后的策略中需要合并的策略进行合并,将合并后的策略确定为待匹配策略,具体的,将从解析后的第一策略文档中的策略提取出来,封装提取出来的策略,将封装后的不需要合并的策略确定为待匹配策略,将将封装后的需要合并的策略进行合并,将合并后的策略确定为待匹配策略。S104:将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果。所述将所述请求参数与所述每条待匹配策略进行匹配的步骤,包括:将所述请求参数与所述待匹配策略中的每条拒绝的策略和/或授权的策略进行匹配。在实际应用中,网页服务器调用评估器获得匹配结果,在本发明实施例中,评估器用于将请求参数与每条待匹配策略进行匹配,每条待匹配策略也包括:权限标识信息、接口标识信息和条件参数;所述条件参数包括:服务标识信息、区域标识信息、账户信息和该服务的具体参数。具体的,可以将请求参数与待匹配策略中的接口标识信息及条件参数进行匹配,如果请求参数与待匹配策略中的接口标识信息及条件参数匹配成功,则该条待匹配策略中的权限标识信息为匹配结果;如果匹配不成功,则与该条待匹配策略中的权限标识信息相反的信息为匹配结果。在本发明实施例中,将请求参数与待匹配策略进行匹配,根据匹配结果,确定该请求是否通过鉴权,匹配的过程中需将请求参数与待匹配策略中的接口标识信息及条件参数进行匹配,鉴权的结果为允许或拒绝目标用户访问目标服务的某一个或者某一种接口,这种鉴权方式相较于现有技术,鉴权的粒度更细,基于服务标识信息、接口标识信息、条件参数及权限标识信息,实现了服务、接口、条件参数及权限这4个维度的鉴权,从而实现了细粒度的鉴权。S105:根据匹配结果,确定该请求是否通过鉴权。在实际应用中,待匹配策略可以全是拒绝的策略,也可以全是授权的策略,也可以一部分待匹配策略是拒绝的策略,另一部分待匹配策略是授权的策略。在所述第一策略文档中包括的策略均是拒绝策略的情况下,所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数未与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权不通过;在所述第一策略文档中包括的策略均是授权策略的情况下,所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。需要说明的是,如果第一策略文档中包括的策略均是拒绝策略,根据第一策略文档获得是待匹配策略均是拒绝待匹配策略,如果第一策略文档中包括的策略均是允许策略,根据第一策略文档获得是待匹配策略均是允许待匹配策略。这里所说拒绝策略和允许策略,均是根据每条策略中的权限标识信息确定的。示例性的,如果一条策略中的权限标识信息为Allow,则该条策略是允许策略;如果一条策略中的权限标识信息为Deny,则该条策略是拒绝策略。当然权限标识信息还可以为其他的形式,例如,权限标识信息中1为允许,0为拒绝,即权限标识信息为1的策略为允许策略,限标识信息为0的策略为拒绝策略。如果第一策略文档中所有的策略均是拒绝的策略,如果请求参数与每一条权限标识信息为拒绝的待匹配策略进行匹配,具体的,可以随机待匹配策略中选择一个与该请求参数进行匹配,如果请求参数与该待匹配策略不匹配,则在没有进行匹配的待匹配策略中随机选择一个待匹配策略,与请求参数进行匹配,直至待匹配策略与请求参数匹配,或者请求参数未与任何一条待匹配策略匹配为止;也可以将待匹配策略进行排序,根据排序结果,逐一与请求参数进行匹配,直至待匹配策略与请求参数匹配,或者请求参数未与任何一条待匹配策略匹配为止;当然,也可以是其他的匹配顺序,在这里不进行一一列举。在所述待匹配策略中包括至少一条拒绝的策略和/或一条授权的策略的情况下,所述根据匹配结果,确定该请求是否通过鉴权的步骤,包括:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,或未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。如果待匹配策略中既有拒绝的策略,也有授权的策略,需要先将权限标识信息为拒绝的待匹配策略与请求参数进行匹配,若请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权不通过;若请求参数未与任何一条权限标识信息为拒绝的待匹配策略匹配,则将请求参数与权限标识信息为授权的待匹配策略匹配进行匹配,若请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;如果请求参数未与任何一条待匹配策略匹配,则该请求鉴权不通过。在实际应用中,可以将请求通过或不通过的鉴权结果发送给用户。在实际应用中,带有策略合并的鉴权过程可以如图3所示,网页服务器获取到用户的请求后,对用户预先绑定的第一策略文档进行解析,将从解析后的第一策略文档中的策略提取出来,封装提取出来的策略,将封装后的不需要合并的策略确定为待匹配策略,调用评估器对请求参数与待匹配策略进行匹配,根据匹配结果,确定是否鉴权通过,将鉴权结果反馈给用户,这里所说的鉴权结果为通过或不通过。应用本发明实施例,可以通过修改第一策略文档实现对策略的修改,由于采用文档形式记录策略,所以修改策略时,只修改策略文档即可,不需要进行其他的操作,相较于现有技术,实现了比较便捷地对策略进行修改,另外,在本发明其他实施例中,策略文档中的策略包括:权限标识信息、接口标识信息和条件参数,条件参数服务标识信息、区域标识信息、账户信息和该服务的具体参数,因此,在鉴权的过程中需要匹配多种信息,与现有技术相比,还实现了细粒度鉴权。在本发明的另一个具体实施例中,图4为本发明实施例提供的鉴权方法的另一种流程示意图,与图1所示的实施例相比,本发明实施例中在S103和S104之间,还可以包括S106。S106:将所述请求参数封装为预设格式。将请求参数封装为KRN格式,请求参数的格式与第一策略文档中的策略及待匹配策略的格式相同,由于都是KRN格式,这样请求参数可以很方便与待匹配策略进行匹配。具体的,将所述请求参数封装为预设格式的步骤,可以包括:由抽象工厂根据所述请求参数中包含的服务标识信息,获得与所述服务标识信息对应预设的具体工厂;由所述具体工厂,将所述请求参数封装为所述预设格式。本领域技术人员可以理解的是,可以采用抽象工厂模式将请求参数封装成预设格式。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,是指当有多个抽象角色时,使用的一种工厂模式。示例性的,抽象工厂模式可以如图5所示。工厂接收用户的请求后,根据请求中包含的服务标识信息与抽象工厂的映射关系,确定用于处理该请求的抽象工厂,在实际应用中,每个工厂下面包含了不同的抽象工厂,抽象工厂在接收到工厂发送的请求后,根据服务标识信息判断使用哪个具体工厂对请求进行处理。在图1中,iam服务工厂、vpc服务工厂及EIP(EnterpriseInformationPortal,企业信息门户)服务工厂均为具体工厂,具体工厂与抽象工厂的关系是继承关系,继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。如果服务标识信息是iam,则将请求发送给iam服务工厂,iam服务工厂将请求参数封装成第二预设格式。采用具体工厂将请求参数封装成预设格式,不需要关注将请求参数封装成预设格式具体实现,将具体实现屏蔽起来,可以理解为只要具体工厂对请求参数进行封装,封装后的格式满足第二预设格式即可,不关注具体工厂的封装过程。需要说明的是,每一种服务标识信息对应着一种封装的过程,所以抽象工厂需要根据服务标识信息选择具体工厂,由具体工厂将请求参数封装成第二预设格式。示例性的,请求参数具体为:服务标识信息是iam,区域标识信息为cn-beijing-1,账户信息为123456,服务接口标识信息对应的第一接口标识信息为RunInstances,服务的具体参数为security-group/*,抽象工厂根据请求参数的服务标识信息选择iam服务工厂,iam服务工厂将请求参数封装为预设格式为:{iam:RunInstances,krn:ksc:iam:cn-beijing-1:123456:security-group/*}。如果不根据服务标识信息确定具体工厂,随机选择具体工厂,很有可能封装后的请求参数不符合预设格式。示例性的,如果请求参数有EIP服务工厂封装,封装后的请求参数为:{iam:security-group/*,krn:ksc:iam:cn-beijing-1:123456:RunInstances}。EIP服务工厂封装后的请求参数不符合预设格式,服务接口标识信息对应的第一接口标识信息与服务具体参数的位置错误,有可能导致封装后的请求参数与待匹配策略进行匹配时,匹配结果出现错误,进而,有可能导致本该通过的请求最后不通过,本该不通过的请求最后通过。应用本发明实施例,可以通过修改第一策略文档实现对策略的修改,由于采用文档形式记录策略,所以修改策略时,只修改策略文档即可,不需要进行其他的操作,相较于现有技术,实现了比较便捷地对策略进行修改,另外,在本发明其他实施例中,策略文档中的策略包括:权限标识信息、接口标识信息和条件参数,条件参数服务标识信息、区域标识信息、账户信息和该服务的具体参数,因此,在鉴权的过程中需要匹配多种信息,与现有技术相比,还实现了细粒度鉴权。图6为本发明实施例提供鉴权装置的一种结构示意图,该鉴权装置,应用于网页服务器,装置包括:获取模块201、第一获得模块202、第一确定模块203、第二获得模块204和第二确定模块205。获取模块201,用于获取用户请求,所述用户请求中包含:用户标识信息和请求参数。具体的,所述请求参数包括:所述请求参数包括:服务标识信息、区域标识信息、账户信息、所述服务标识信息对应的第一接口标识信息及该服务的具体参数。第一获得模块202,用于根据所述用户标识信息,获得所述用户预先绑定的第一策略文档;具体的,所述第一策略文档包括至少一条策略,每条策略包括:权限标识信息、接口标识信息和条件参数;所述条件参数包括:服务标识信息、区域标识信息、账户信息及该服务的具体参数。在实际应用中,所述第一策略文档中可以包括的策略均是拒绝策略;所述第一策略文档中也包括的策略均是拒绝策略;所述第一策略文档也可以包括至少一条拒绝和/或授权的策略;所述待匹配策略中包括至少一条拒绝的策略和/或一条授权的策略。具体的,每条策略中的条件参数按预设格式存储。第一确定模块203,用于根据所述第一策略文档,确定本次请求对应的待匹配策略。所述第一确定模块203,可以具体用于:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,从所有的策略中确定待匹配策略。所述第一确定模块,可以具体用于:对所述第一策略文档进行解析,从解析后的第一策略文档中提取所有的策略,将提取的所有的策略确定为待匹配策略;或,将接口标识信息满足所述目标接口标识信息、且权限标识相同的至少两条策略进行合并,将合并后的策略确定为待匹配策略。所述第一确定模块203,还可以具体用于:读取所述第一策略文档,确定所述第一策略文档中权限标识信息、接口标识信息和条件参数的数据类型;根据确定的数据类型及所述第一策略文档,获取所述第一策略文档中的所述权限标识信息、所述接口标识信息和所述条件参数并进行存储;或由语法分析器读取所述第一策略文档,获取权限标识信息、接口标识信息和条件参数并进行存储。第二获得模块204,用于将所述请求参数与所述每条待匹配策略进行匹配,获得匹配结果。所述第二获得模块204,具体用于:将所述请求参数与所述待匹配策略中的每条拒绝的策略和/或授权的策略进行匹配。第二确定模块205,用于根据匹配结果,确定该请求是否通过鉴权。在本发明实施例中,所述第二确定模块205,可以用于若所述请求参数未与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,则该请求鉴权不通过;所述第二确定模块205,也可以用于若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。所述第二确定模块205,可以具体用于:若所述请求参数与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权通过;若所述请求参数与任何一条权限标识信息为拒绝的待匹配策略匹配,或未与任何一条权限标识信息为授权的待匹配策略匹配,则该请求鉴权不通过。在本发明实施例中,将请求参数与待匹配策略进行匹配,根据匹配结果,确定该请求是否通过鉴权,匹配的过程中需将请求参数与待匹配策略中的接口标识信息及条件参数进行匹配,鉴权的结果为允许或拒绝目标用户访问目标服务的某一个或者某一种接口,这种鉴权方式相较于现有技术,鉴权的粒度更细,基于服务标识信息、接口标识信息、条件参数及权限标识信息,实现了服务、接口、条件参数及权限这4个维度的鉴权,从而实现了细粒度的鉴权。应用本发明实施例,可以通过修改第一策略文档实现对策略的修改,由于采用文档形式记录策略,所以修改策略时,只修改策略文档即可,不需要进行其他的操作,相较于现有技术,实现了比较便捷地对策略进行修改,另外,在本发明其他实施例中,策略文档中的策略包括:权限标识信息、接口标识信息和条件参数,条件参数服务标识信息、区域标识信息、账户信息和该服务的具体参数,因此,在鉴权的过程中需要匹配多种信息,与现有技术相比,还实现了细粒度鉴权。图7为本发明实施例提供鉴权装置的另一种结构示意图,该鉴权装置,应用于网页服务器,与图6所示的实施例相比,在本发明实施例中,该鉴权装置还包括封装模块206。封装模块206,用于将所述请求参数封装为所述预设格式。所述封装模块206,可以具体用于:根据所述请求参数中包含的服务标识信息,获得与所述服务标识信息对应预设的具体工厂;由所述具体工厂,将所述请求参数封装为所述预设格式。应用本发明实施例,可以通过修改第一策略文档实现对策略的修改,由于采用文档形式记录策略,所以修改策略时,只修改策略文档即可,不需要进行其他的操作,相较于现有技术,实现了比较便捷地对策略进行修改,另外,在本发明其他实施例中,策略文档中的策略包括:权限标识信息、接口标识信息和条件参数,条件参数服务标识信息、区域标识信息、账户信息和该服务的具体参数,因此,在鉴权的过程中需要匹配多种信息,与现有技术相比,还实现了细粒度鉴权。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1