专利名称:一种用户身份验证方法及装置的制作方法
技术领域:
本发明涉及信息安全领域,尤其涉及一种用户身份验证方法及装置。
背景技术:
Web服务(Web Service )作为当前最广泛的松耦合信息交互方式被广泛运 用于各种互联网应用中,由于交互信息直接暴露在互联网上会有很多安全隐 患,因此数字证书被广泛使用,数字证书是一种权威性的电子文档,标志通信 各方身份信息的 一 系列数据。它提供了 一种在Internet上验证身份的方式。
目前数字证书可以分为两类, 一类是证书授权中心(CertificateAuthority, CA)认证的数字证书和非CA认证的数字证书。前者是后者通过CA认证签名 以后得到的,由于CA认证的成本较高,目前大部分的普通开发者使用的是非 CA认证的数字证书,在非CA认证的数字证书使用过程中,如图1所示,如 果信息交互的双方(A和B)需要使用签名认证,那么就必须预先把对方数字 证书中的公钥导入到本地服务器存储的证书库中,以作为校验身份的证据,双 方在进行信息交互时,A使用自己的私钥对发送给B的信息进行数字签名,B 接收到该信息后使用本地证书库中的A的公钥进行解密。
上述非CA认证的数字证书的使用过程中,如果信息交互的某一方数字证 书更新或者重新创建,那么就必须重新从对方的数字证书中将公钥导出,再通 过人为的方式导入到本地服务器存储的证书库中,并且由于数字证书以及证书 库都是静态文件,更新后的公钥导入证书库后必须重启服务器,新的公钥才能 够生效。
再者,在同时与多个用户进行信息交互的情况之下,如果受信方用户出现 变化(不断增加或者减少),那么就需要不断在本地证书库中导入新的公钥或删除已有的公钥,在证书库文件中增加或删除公钥,也必须重启服务器才能生效。
基于上述现有技术存在的证书库中公钥更新较麻烦、不能及时更新和更新 效率低的问题,在使用公钥对受信方用户进行身份验证的过程中,很可能出现 由于证书库文件中的公钥未能及时更新,造成合法用户不能通过身份验证的情
况,降低了 Web Service身份验证系统的运行性能和效率。
发明内容
本发明提供了 一种用户身份验证方法及装置,用以解决现有技术中存在的 证书库中公钥更新较麻烦、不能及时更新和更新效率低的问题,以及由此所造 成的Web Service身份验证系统运行性能降低的问题。
本发明提供的一种用户身份验证方法,包括
接收用户身份验证请求,在内存中存储用户公钥信息的虚拟公钥库中查找 是否有该用户对应的公钥;
若有,使用查找到的公钥进行用户身份验证;
若没有,用存储用户公钥信息的公钥源更新所述虚拟公钥库;并在更新后 的虛拟公钥库中查找是否存在对应的公钥;若存在,使用查找到的公钥进行身 份验证;若不存在,返回身份验证失败的结果。
本发明提供的一种用户身份验证装置,包括
虛拟公钥库,用于在内存中存储用户公钥信息;
请求接收单元,用于接收用户身份验证请求;
第一公钥查找单元,用于根据所述用户身份验证请求在所述存储有用户公 钥信息的虛拟公钥库中查找是否有该用户对应的公钥;若有,将查找到的公钥 发送至身份验证单元;若没有,通知第一虛拟公钥库更新单元;
所述第一虛拟公钥库更新单元,用于根据所述第一公钥查找单元的通知, 使用存储用户公钥信息的公钥源更新所述虚拟公钥库;第二公钥查找单元,用于在所述第一虚拟公钥库更新单元更新虚拟公钥库
后查找是否有用户对应的公钥;若有,将查找到的公钥发送至身份验证单元; 若没有,返回身份验证失败的结果;
所述身份验证单元,用于使用所述第一公钥查找单元或第二公钥查找单元 查找到的公钥进行用户身份验证。
本发明有益效果如下
本发明提供的身份验证的方法及装置,通过接收用户身份验证请求,在内 存中存储用户公钥信息的虚拟公钥库中查找是否有该用户对应的公钥;若有, 使用查找到的公钥进行用户身份验证;若没有,用存储用户公钥信息的公钥源 更新所述虚拟公钥库;在更新后的虚拟公钥库中查找是否存在对应的公钥;若 有,使用查找到的公钥进行身份验证;若没有,返回身份验证失败的结果。本 发明所提供的用户身份验证方法及装置,在使用公钥对受信方用户进行身份验 证过程中,当查找不到该受信方用户公钥时,能够实现对存储在内存中的虚拟 公钥库即时地进行更新,实现简单方便。这样就避免了现有技术中,由于证书 库中公钥更新较麻烦、不及时所造成的合法用户不能通过身份验证的问题。
图1为本发明背景技术中数字证书使用过程示意图2为本发明实施例提供的身份验证方法示意图3A为本发明实施例提供的虚拟公钥库建立过程流程图3B为本发明实施例提供的使用软件模块的方式创建虚拟公钥库的流程
图4为本发明实施例提供的用户身份验证方法流程图5为本发明实施例提供的用户身份验证装置内部结构示意图。
具体实施方式
下面结合附图,用具体实施例对本发明的一种用户身份验证方法及装置进 4亍详细的i兌明。
为了说明的方便,本发明实施例以图2中的实例进行说明,在图2中, Web Service身份验证系统中的用户A使用其虚拟公钥库中存储的用户B的公 钥信息对受信方用户B发送的数字签名进行身份验证(当然,在Web Service 身份验证系统中,用户A的受信方用户除了用户B之外还可以有一个或多个, 例如还可以包含用户C、用户D等等)。用户A的虚拟公钥库通过将公钥源中 的公钥信息载入到内存中生成,具体的创建流程如下
如图3A所示,本发明实施例提供的虚拟公钥库的创建过程,包括如下步
骤
步骤301、将接收的公钥存储至公钥源中。
首先每个受信方用户与用户A之间建立连接时,都会将自己的公钥发送给 用户A,用户A将接收的公钥自动地存储至公钥源中。
与现有技术所不同的,公钥源中的公钥信息采用与数字证书分离的方式存 储,公钥源可以有多种形式,包括但不限于数据库、文件等等,由于公钥源中 的公钥信息数据存储形式不再是静态文件形式,而是采用的例如数据库等非静 态文件的形式,这种非静态文件的形式中的公钥信息可以方便地、即时地进行 修改、增加或删除,与现有数字证书或者证书库等静态文件的更新方式完全不 同。公钥源可以存储在用户A的本地,也可以存储在用户A信任的网络侧第 三方服务器上,本发明对公钥源具体的存储位置不做任何限定。
例如当某一受信方用户的公钥发生更新时,该受信方用户会将更新后公钥 导出发送给用户A,用户A接收到该用户更新后的公钥后,使用该公钥更新公 钥源中对应的公钥信 息o
又例如当增加新的受信方用户时,用户A会将接收的新的受信方用户公钥 添加至^H月源中;或者
当受信方用户减少时,用户A会直接将公钥源中该受信方用户对应的公钥信息删除。
步骤302、从存储有用户公钥信息的公钥源中获取公钥信息至内存,生成 虚拟公钥库。
本发明实施例在Java开源的Axis2框架(Axis2框架支持Web Service交 互各方消息的发布、解析等功能,为了形象表述,以下称为Web Service解析 发布模块)的基础上对其已有的公钥获取模块的实现功能进行扩展,用软件模 块的方式实现了虚拟公钥库的创建过程。但本发明实施例并不限定具体采用何 种软件工具进行开发,本发明实施例仅为一种较佳的具体实施方式
。当然,虚 拟公钥库创建方式还可以采用软件和硬件结合的方式,本发明实施例对此不做 任何限定。
本步骤302中创建虛拟公钥库的具体流程如图3B所示,包括 步骤3021、初始化Web Service解析发布模块,Web Service解析发布模块 调用公钥获取模块。
在Web Service应用启动时,初始化Web Service解析发布模块; 现有Web Service解析发布模块已经提供了应用于Web Service身份验证系 统中交互各方验证身份所用的公钥获取模块,本发明实施例以此模块为切入 点,对该模块的实现进行了扩展,使得公钥获取模块被调用后,公钥获取模块 的实现除了执行现有的逻辑,例如载入用户A自身数字证书中的公、私钥对信 息等,还需要执行下列的步骤3022。
步骤3022、公钥获取模块创建公钥管理模块。
公钥获取模块的实现按照设定的规则在当前环境下查找公钥管理模块的 配置文件;如果公钥获取模块的实现没有找到对应的配置文件,那么就载入默 认的模块;如果公钥获取模块的实现找到对应的配置文件,那么载入该配置文 件所指定的模块。配置文件以及指定的模块都可以由开发者根据需要预先创建 并存储。当默认的或指定的模块即公钥管理模块的实现被载入后,公钥获取模 块就完成了对公钥管理模块的创建。步骤3023、公钥管理模块创建公钥载入更新模块。
公钥管理模块的实现按照设定的规则在当前环境下查找公钥载入更新模 块的配置文件;如果没有找到对应的配置文件,那么公钥管理模块的实现载入 默认的模块;如果找到对应的配置文件,那么公钥管理模块的实现载入该配置 文件所指定的模块。当默认的或指定的模块即公钥载入更新模块的实现被载入 后,公钥管理模块就完成了公钥载入更新模块的创建。
步骤3024、公钥载入更新模块创建完成后,公钥载入更新模块从公钥源中 获取公钥,创建虚拟公钥库。公钥载入更新模块从公钥源中获取公钥,将获取 到的公钥存储在内存中,形成虚拟公钥库。
上述公钥管理模块、公钥载入更新模块的接口已预先设计完成,在虚拟公 钥库生成的过程中,由上一级模块载入默认的或指定的模块,完成下一级的模 块的创建(例如由公钥获取模块创建公钥管理模块,由创建好的公钥管理模块 创建公钥载入更新模块),当公钥载入更新模块创建完成后,执行从公钥源中 获取公钥存入内存的操作,形成虚拟公钥库。
在本发明实施例中,在虚拟公钥库创建完成之后,可以根据设定的频率周 期地从公钥源中获取公钥信息到内存,并使用获取到的公钥信息对虚拟公钥库 进行更新;
还可以在对用户进行身份验证过程中,根据需要即时地对虚拟公钥库进行 更新,上述两种方式保证了虚拟公钥库中的公钥信息能够及时地与公钥源中的 公钥信息保持一致。这样就避免了现有技术中,当受信方用户的数字证书更新, 或者受信方用户自身增加或减少时,需要人为对证书库等静态文件进行修改、 更新所造成的操作麻烦、更新不及时和效率低的问题。
还是以图2中用户A对受信方用户B进行身份验证为例,在虚拟公钥库 建立之后,当接收到用户身份验证请求,需要对用户的数字签名进行验证的时 候,本发明实施例所提供的用户身份验证方法,如图4所示,包括以下步骤
步骤401 、接收用户身份验证请求;步骤402、根据该请求中携带的数字证书用户名在用户A的虛拟公 库中 查找是否有该受信方用户B对应的公钥。当查找到有对应的公钥时,执行下列 步骤403;当没有查找到对应的公钥时,执行下列步骤404;
由于步骤404为可选步骤,本发明实施例中也可以在没有查找到对应的公 钥时,直接执行下列步骤405 。
步骤403、使用查找到的公钥对用户B的数字签名进行验证,验证其是否 是合法的用户;并返回相应的验证结果(身份验证通过或失败)。
步骤404、判断当前虚拟公钥库的更新频率是否大于设定的阈值,若判断 结果为是,那么执行步骤405;若判断结果为否,则执行步骤406。
步骤404之所以为可选步骤,主要因为该步骤是出于对Web Service身份 验证系统的安全与性能方面考虑而设置;由于对虚拟公钥库的更新过程(从公 钥源中重新获取公钥再载入至内存)需要耗费系统资源,如果对虛拟公钥库所 设定更新频率较高,在对用户进行身份验证过程中,过于频繁地更新虚拟公钥 库不仅不必要,还有可能会对整个Web Service身份验证系统运行的性能和安 全不利,因此,可以根据当前虚拟公钥库的更新频率的大小来判断是否需要即 时地更新虚拟公钥库,例如可以与设定的某一阈值进行比较,如果虚拟公钥库 的更新频率较高,大于该阈值,那么就判断不需要即时更新,如果虚拟公钥库 的更新频率较低,小于等于该阈值,那么就判断需要即时更新。
步骤405、使用存储有受信方用户公钥信息的公钥源更新当前虚拟公钥库。
步骤406、直接返回该用户身份验证失败的结果。
当步骤405中完成对用户A的虚拟公钥库的更新过程后,还需要执行以下 步骤
步骤407、在更新后的用户A的虛拟公钥库中再次查找是否有用户B对应 的公钥,当查找到对应的公钥时,转向执行步骤403;当公钥管理模块没有查 找到对应的公钥时,转向执行步骤406。
本发明实施例还提供了一种用户身份验证装置,如图5所示,具体包括虛拟公钥库501、请求接收单元502、第一公钥查找单元503、第一虚拟公钥库 更新单元504、第二公钥查找单元505和身份验证单元506;其中
虛拟公钥库501,用于在内存中存储用户公钥信息;
请求接收单元502,用于接收用户身份验证请求;
第一公钥查找单元503,用于根据接收的用户身份验证请求,在存储有用 户公钥信息的虚拟公钥库501中查找是否有对应的公钥;若有,将查找到的公 钥发送至身份验证单元506;若没有,通知第一虚拟公钥库更新单元504;
第一虛拟公钥库更新单元504,用于根据第一公钥查找单元503的通知, 用存储用户公钥信息的公钥源更新虚拟公钥库501;并在虚拟公钥库501更新 完成后,通知第二公钥查找单元505;
第二公钥查找单元505,用于根据第一虚拟公钥库更新单元504的通知, 在更新后的虚拟公钥库501中查找是否有对应的公钥;若有,将查找到的公钥 发送至身份验证单元506;若没有,返回身份验证失败的结果;
身份验证单元506,用于使用第一公钥查找单元503或第二公钥查找单元 505查找到的公钥进行身份验证。
本发明实施例所提供的用户身份验证装置,更进一步地,还包括判断单 元507;
第一公钥查找单元503,在虚拟公钥库501中没有查找到对应的公钥时, 还用于通知判断单元507;
判断单元507,用于判断当前设定的虚拟公钥库自身更新频率是否大于设 定的阈值,若是,返回用户身份验证失败的结果;
若否,通知第一虚拟公钥库更新单元504更新虚拟公钥库501。
本发明实施例所提供的身份验证装置,更进一步地,还包括虚拟公钥库 生成单元508;
虛拟公钥库生成单元508,用于通过从存储用户公钥信息的公钥源中获取 公钥信息到内存,生成虚拟公钥库501。本发明实施例所提供的身份验证装置,更进一步地,还包括第二虚拟公 钥库更新单元509;用于按照设定的频率周期地从公钥源中获取公钥信息到内 存,使用获取到的公钥信息对虚拟公钥库501进行更新。
本发明实施例提供的用户身份验证装置为一个较佳的实施方式,在具体实 施过程中,也可以直接采用创建虚拟公钥库时使用的软件模块例如公钥管理模 块和公钥载入更新模块完成上述身份验证装置的部分功能,例如采用公钥管理 模块可以实现上述第 一公钥查找单元、第二公钥查找单元以及身份验证单元的 功能;公钥载入更新模块完成上述第一虚拟公钥库更新单元的功能,上述模块
不做任何限定。
本发明实施例提供了一种身份验证的方法,包括根据接收的身份验证的 请求,在虚拟公钥库中查找是否有对应的公钥;若有,使用查找到的公钥进行 身份验证;若没有,从公钥源中重新获取公钥数据,更新虚拟公钥库;在更新 后的虛拟公钥库中查找是否存在对应的公钥;若存在,使用查找到的公钥进行 身份验证;若不存在,返回身份验证失败的结果。本发明所提供的用户身份验 证方法,在使用公钥对受信方用户进行身份验证过程中,当查找不到该受信方 用户公钥时,能够实现对存储在内存中的虚拟公钥库即时地进行更新,实现简 单方便。这样就避免了现有技术中,由于证书库中公钥更新较麻烦、不及时所 造成的合法用户不能通过身份验证的问题。并且由于本发明实施例提供的虚拟 公钥库存储在内存中,所以在使用过程中,能够更方便快速地进行查询。
另外,本发明实施例所提供的用户身份验证方法,当在虛拟公钥库中没有 查找到对应的公钥时,还增加了根据虚拟公钥库自身更新频率的大小判断是否 需要即时地更新当前虛拟公钥库的步骤,如果判断结果为是,那么执行更新虛 拟公钥库的步骤,如果判断结果为否,直接返回身份验证失败的结果,这样能 够保证在对公钥方便、即时地更新的前提下,提高Web Service身份验证系统 的运行性能以及安全性。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种用户身份验证方法,其特征在于,包括接收用户身份验证请求,在内存中存储用户公钥信息的虚拟公钥库中查找是否有该用户对应的公钥;若有,使用查找到的公钥进行用户身份验证;若没有,用存储用户公钥信息的公钥源更新所述虚拟公钥库,并在更新后的虚拟公钥库中查找是否存在对应的公钥;若存在,使用查找到的公钥进行身份验证,若不存在,返回身份验证失败的结果。
2、 如权利要求1所述的方法,其特征在于,所述用存储用户7>钥信息的 公钥源更新所述虚拟公钥库之前,还包括判断当前所述虚拟公钥库的更新频率是否大于设定的阈值,若是,返回用 户身份验证失败的结果;若否,用存储用户公钥信息的公钥源更新所述虚拟公 钥库。
3、 如权利要求1所述的方法,其特征在于,所述虚拟公钥库通过从存储 用户公钥信息的公钥源中获取公钥信息到内存生成。
4、 如权利要求3所述的方法,其特征在于,还包括当用户公钥更新时, 使用更新后的所述用户公钥信息更新所述公钥源中对应的公钥信息;当用户增加时,将接收的新用户的公钥信息添加至公钥源中;当用户减少时,在公钥源中删除所述减少的受信方用户对应的公钥信息。
5、 如权利要求4所述的方法,其特征在于,还包括按照设定的频率周 期地从公钥源中获取公钥信息到内存,并使用获取到的所述公钥信息对所述虛 拟公钥库进行更新。
6、 如权利要求1-5任一项所述的方法,其特征在于,所述公钥源包括 存储一个或多个受信方用户公钥信息的数据库或文件。
7、 一种用户身份验证装置,其特征在于,包括 虛拟公钥库,用于在内存中存储用户公钥信息;请求接收单元,用于接收用户身份验证请求;第一公钥查找单元,用于根据所述用户身份验证请求在所述存储有用户公 钥信息的虛拟公钥库中查找是否有该用户对应的公钥;若有,将查找到的公钥 发送至身份验证单元;若没有,通知第一虚拟公钥库更新单元;所述第一虚拟^H月库更新单元,用于根据所述第一^^钥查找单元的通知, 使用存储用户公钥信息的公钥源更新所述虚拟公钥库;第二公钥查找单元,用于在所述第一虚拟公钥库更新单元更新虚拟公钥库 后查找是否有用户对应的公钥;若有,将查找到的公钥发送至身份验证单元; 若没有,返回身份验证失败的结果;所述身份验证单元,用于使用所述第一公钥查找单元或第二公钥查找单元 查找到的公钥进行用户身份验证。
8、 如权利要求7所述的装置,其特征在于,还包括判断单元; 所述第 一公钥查找单元,在所述虛拟公钥库中没有查找到对应的公钥时,还用于通知所述判断单元;设定的阈值,若是,返回用户身份验证失败的结果;若否,通知所述第一虚拟公钥库更新单元更新所述虚拟公钥库。
9、 如权利要求7所述的装置,其特征在于,还包括虚拟公钥库生成单元;所述虛拟公钥库生成单元,用于通过从存储用户公钥信息的公钥源中获取 公钥信息到内存,生成虚拟公钥库。
10、 如权利要求9所述的装置,其特征在于,还包括第二虚拟公钥库更 新单元;所述第二虛拟公钥库更新单元,用于按照设定的频率周期地从公钥源中获 取公钥信息到内存,使用获取到的所述公钥信息对所述虛拟公钥库进行更新。
全文摘要
本发明公开了一种用户身份验证方法及装置,包括接收用户身份验证请求,在内存中存储用户公钥信息的虚拟公钥库中查找是否有该用户对应的公钥;若有,使用查找到的公钥进行用户身份验证;若没有,用存储用户公钥信息的公钥源更新所述虚拟公钥库,并在更新后的虚拟公钥库中查找是否存在对应的公钥;若存在,使用查找到的公钥进行身份验证;若不存在,返回身份验证失败的结果。本发明所提供的用户身份验证方法,在使用公钥对受信方用户进行身份验证过程中,当查找不到该受信方用户公钥时,能够实现对存储在内存中的虚拟公钥库即时地进行更新,并且实现简单方便。
文档编号H04L9/32GK101616002SQ200810125239
公开日2009年12月30日 申请日期2008年6月23日 优先权日2008年6月23日
发明者岑文初 申请人:阿里巴巴集团控股有限公司