专利名称:基于web应用的资源验证系统和方法
技术领域:
本发明涉及Web资源验证技术,更具体而言,涉及基于Web应用的资源验证系统和方法。
背景技术:
在大部分企业Web应用中都会涉及到对用户的认证以及权限的控制,且这部分内容都非常敏感。而用户的身份经常会发生变化,那么其拥有的权限关系也会随着发生变更。所以对用户请求的资源进行认证以及对用户的权限关系进行实时的管理是非常重要的。传统的基于Web应用资源的权限控制方法,一般都采用对用户及资源做简单的验证,验证方式较为单一,对用户的角色或权限变更不能实时做出反应。同时,传统的基于Web应用资源的权限控制方法还存在验证逻辑与业务部分耦合度太高的问题。而实际上,无论何种进行资源验证和权限控制的系统,资源验证和权限控制都不能过多影响实际业务操作的时长,特别是拥有庞大客户访问量的企业web应用。如果占用实际业务操作时长过长,客户满意度降低,会大大影响企业业务。因此,web应用的资源验证和权限控制要高效、准确、同时不能对实际业务的处理时长有大的影响。
发明内容
为解决现有技术中存在的以上问题,本发明提供一种基于web应用的资源验证方法,包括:步骤1:接收来自客 户端的用户对资源的业务请求;步骤2:判断该资源是否需要验证;步骤3:响应于该资源需要验证,根据用户信息生成用户拥有资源集;步骤4:将该用户拥有资源集放入资源验证用的上下文数据中;步骤5:读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;步骤6:响应于匹配成功,则从所述上下文数据中读取用户请求的资源,执行该资源对应的业务操作本发明还提供一种基于web应用的资源验证系统,包括:统一认证单元,统一认证单元接收来自客户端的用户对资源的业务请求,如果该资源需要认证,则根据用户信息生成用户拥有资源集,且将用户拥有资源集放入资源验证用的上下文数据中;资源验证单元,资源验证单元响应于该资源需要认证,而读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;以及用户行为及业务执行单元,用户行为及业务执行单元响应于资源匹配成功,而执行该资源对应的业务操作。本发明的系统和方法能够准确地、统一地进行web资源验证,并对资源的权限进行精细化控制。本发明的系统和方法还能够使得web资源验证与web应用的实际业务耦合度降低,具有对实际业务操作的低侵入性。
图1为本发明的系统的结构图;图2为本发明的方法的流程图;以及图3为本发明的方法的更详细的流程图。
具体实施例方式下面参照图1并结合“京东云存储系统”为例,对发明的系统做具体的描述。图1显示了本发明的系统的结构图。本发明的系统包括:统一认证单元,统一认证单元接收来自客户端的用户对资源的业务请求,如果该资源需要被验证,且用户通过认证,则根据用户信息生成用户拥有资源集,且将用户拥有资源集放入资源验证用的上下文数据中;资源验证单元,资源验 证单元响应于该资源需要认证,而读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;以及用户行为及业务执行单元,用户行为及业务执行单元响应于资源匹配成功,而执行该资源对应的业务操作。更具体而言,统一认证单元可以包括拦截模块和用户认证模块,当然,这两个模块也可以合二为一。拦截模块拦截来自客户端的用户的资源请求,该请求中包括了用户信息和请求的资源。拦截模块拦截该请求,将该请求的资源与预先设置的待验证资源池中的资源相比较,比较方法为精确匹配。如果用户请求的资源不在待验证资源池中,表明不需要进行资源验证,可以将该资源的请求直接传输至用户行为及业务执行单元,进行业务操作,这种处理方式可以简化对共用资源的验证,提高系统性能。如果拦截模块判定用户请求的资源在待验证资源池中,则表明需要对该资源进行资源验证。用户认证模块根据用户身份信息生成用户拥有资源集,放入资源验证用的上下文数据中,并发送相应消息至资源验证单元使得资源验证单元开始进行资源验证。资源验证单元响应于自统一认证单元判断所述资源需要验证,读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配,如果匹配失败,则向客户端发送匹配失败信息,如果匹配成功,则发送相应消息至所述用户行为及业务执行单元。用户行为及业务执行单元响应于所述资源验证单元的匹配成功,从所述上下文数据中读取用户请求的资源,执行该请求对应的业务操作,将结果反馈至客户端。这样就完成了一个完整地、统一地资源验证。进一步,为了增加资源验证的准确性,资源验证单元采用了精确匹配和表达式匹配。所述资源验证单元可以包括精确匹配模块和表达式匹配模块。精确匹配模块读取用户拥有资源集,并与用户请求的资源(资源例如可以是URL)进行精确匹配,如匹配成功则请求合法,发送相应消息给用户行为及业务执行单元以执行业务操作。更进一步,如果匹配失败,由表达式匹配模块再进行表达式匹配,例如利用正则表达式或自定义规则进行匹配。如过表达式匹配失败则返回结束信息至请求者,反之则发送匹配成功消息给用户行为及业务执行单元以执行业务操作。
进一步,为了保证用户的合法性,在对资源验证前先对用户进行身份认证。具体为,当拦截模块将用户的资源请求传输给用户认证模块后。用户认证模块根据所述请求的上下文或会话信息进行用户身份认证,认证方法有多种,如根据解密后的cookie或session中数据验证(session或cookie为用户登录成功时赋值)。身份认证通过后,用户认证模块根据用户信息生成用户拥有资源集,放入资源验证用的上下文数据中。更进一步,为了保证用户与资源关系的实时及准确性,本发明的系统还包括初始化及动态维护单元。所述初始化及动态维护单元在web应用初始化的时候从持久化数据中读取并加载(例如,加载到内存中)用户-角色基础数据、角色-资源关系数据。并且根据系统需求实时地配置用户-角色基础数据、角色-资源关系数据。例如,在“京东云存储系统”中,体现为初始化时加载用户-角色基础数据、角色-资源关系数据到内存,并通过“动态维护单元”在后台维护以上数据,并使其实时生效。更具体地,所述初始化及动态维护单元给系统中的用户分配角色,每个角色可拥有一定的资源。用户-角色、角色-资源之间的分配方法根据具体业务而设定,角色-资源之间的对应关系可以根据业务需要而改变。每一个用户可以拥有一个或多个角色,每个角色可以拥有一个或多个资源,且每个角色的资源可以重叠。因此,每一个用户都可以拥有一个资源集。用户-角色基础数据、角色-资源关系数据作为持久化数据被存储。当然,也可以不采用角色为中介,直接将用户与资源进行关联。进一步,所述初始化及动态维护单元可以包括初始化模块和动态维护模块。初始化模块在web应用初始化时从持久化数据库中读取并加载用户-角色基础数据、角色-资源关系数据。加载可以理解为传输至统一认证单元中,也可以加载至统一认证单元可以访问的存储器中,例如,加载到内存中。动态维护模块根据系统需求对用户-角色基础数据、角色-资源关系数据进行实时的维护,包括用户角色变化时,更新用户-角色基础数据,当角色对应的资源发生变化时,更新角色-资源关系数据。对于通过身份认证的新用户,初始化及动态维护单元给该新用户分配角色,在持久化数据中存储该用户的用户-角色基础数据和角色-资源关系数据,将针对该新用户的资源传输给统一认证单元。所述初始化及动态维护单元在收到来自统一认证单元的用户信息后,与持久化数据库中存储的用户信息相比对,根据持久化数据中的用户-角色基础数据和角色-资源关系数据,遍历该已有用户拥有的角色,以及该角色拥有的资源,将该用户拥有的资源传输给统一认证单元。用户认证模块接收返回的针对该用户的资源,去除重复的资源,从而产生针对该用户的用户拥有资源集。该用户拥有资源集放入到所述请求的上下文中,发送相应消息给资源验证单元。如果身份认证没有通过,认证失败后则统一认证单元反馈认证失败信息给客户端。优选地,本发明的系统还可以包括菜单生成单元,其与用户行为及业务执行单元通信。菜单生成单元完成菜单的生成并反馈给用户。具体而言,当菜单生成单元收到来自用户行为和业务执行单元的执行完毕消息后,根据所述上下文中的用户拥有资源集生成多样化的菜单结构(树、列表),并响应给用户,达到所见即所得的效果。 更优选地,所述用户行为及业务执行单元执行完毕用户的资源请求的具体的行为或业务后,判断该用户的请求是否是同步请求,如果不是同步请求,即为异步请求,则返回业务操作执行结果给客户端。如果是同步请求,则将执行结果传输至菜单生成单元。跟据本发明的优选实施例的一个实例为:提供一个“京东云存储系统”,该系统为用户提供文件存储、备份的web服务。该系统包括如上所述的统一认证单元、资源验证单元、业务执行单元、菜单生成单元。当“京东云存储系统”接收到用户的“备份文件”的资源请求后,该系统的统一认证单元首先判断请求的资源是否在待验证资源池中。如果不在,则直接执行“备份文件”操作,如果在,则对用户携带过来的cookie信息解密,然后和预先存储的用户数据进行匹配。如匹配成功则根据用户-角色及角色-资源信息生成用户特有的用户拥有资源集,并放入系统的上下文中。然后,“京东云存储系统”的资源验证单元根据统一认证单元生成的上下文中的资源集,与用户“备份文件”请求对应的资源做精确匹配,如果匹配成功则转到业务执行单元备份用户上传的文件,如果匹配失败,继续和自定义的带通配符的表达式进行匹配,如匹配成功亦转到业务执行单元,如果匹配失败,则返回“备份失败,权限验证失败”的信息给请求者。最后,“京东云存储系统”的业务执行单元执行完“备份文件”操作后,首先判断“备份文件”是否为同步请求,如果不是则直接返回操作结果给客户端,如果是则将转到菜单生成单元,其通过回溯算法生成用户拥有的菜单结构,并和业务执行结果返回给客户端的用户。图2显示了本发明的基于Web应用的资源验证与权限控制方法的流程图。所述方法包括:统一接收用户对资源的请求。判断该请求的资源是否需要验证。如果该请求的资源不需要验证,直接执行该请求对应的业务操作并反馈给用户。如果该资源需要验证,则根据用户信息生成用户拥有资源集,将用户请求的资源与用户拥有资源集的资源相匹配,如果匹配成功,则执行该请求对应的业 务操作并反馈给用户。如图3显示了图2的更详细的流程图,所述方法包括:步骤100:用户发起对web资源的请求,接收用户的请求,判断资源的请求是否需要用户认证。如果请求的资源在待验证资源池中,则表示需要用户认证,行进到步骤101,否则直接跳转到步骤108执行业务操作。步骤101:通过请求cookie数据或会话信息进行用户身份认证,并生成资源验证时需要的上下文数据,该上下文数据包括用户信息,然后行进到步骤102。步骤102:如果身份认证通过,行进到步骤103。如果认证不通过,则跳转到步骤109。步骤103:根据预先存储的用户-角色关系数据和角色-资源关系数据生成认证用户拥有资源集,放入所述上下文数据中。步骤104:根据用户请求的资源地址(例如,URL)与认证用户拥有资源集进行精确匹配。步骤105:判断匹配是否成功,如果匹配成功,则表示通过验证,跳转到步骤108执行业务操作。如果匹配不成功,则转到步骤106。步骤106:进行表达式(可选用正则表达式或者自定义规则)匹配:根据用户请求的资源地址与用户拥有的带表达式资源进行匹配。
步骤107:判定步骤106的匹配是否成功,匹配成功则表示通过资源验证,转到步骤108执行业务操作,否则转到步骤109。步骤108:执行用户行为及相关业务操作,并转到步骤109。步骤109:判定请求类型,如果为同步请求,即发送方发出数据后,等接收方发回响应以后才发下一个请求的通信方式,则行进到步骤110,否则返回至用户,等待接收用户的下一个请求。步骤110:根据所述上下文数据中存放的用户拥有资源集合,用回朔等方法生成功能菜单结构,返回给用户。优选地,在上述实施例中,在步骤100与110之间还增加了异常处理机制,如果出现异常能够保证捕获到异常数据,并作出反馈。如果为同步请求,该方法还在步骤110之后加入了数据过滤器,确保系统及用户上下文、常量数据的正常返回,这是为了确保系统及用户上下文、常量数据的正常返回,降低异常对应用产生的影响。下面以一个具体实例来描述本发明的一个具体应用。在一个项目管理系统中应用本发明,该项目管理系统用于管理多个项目的生命周期。首先,步骤100,用户请求“查看项目信息”。则:根据待验证资源池中的资源判断“查看项目信息”是否需要验证。如果不需要验证,则直接转到步骤108,执行“查询项目信息”,否则转到步骤101生成验证用的上下文数据。步骤101,将请求携带到后台的cookie信息(用户登录成功时种下)解密后,生成用户信息放入验证用的上下文数据中,转到步骤102。步骤102,根据步骤101生成的上下文数据,验证此用户信息是否存在且合法,如验证通过则转到步骤103生成“认证用户拥有资源集”,该资源集包括普通资源与表达式资源,否则转到步骤109。步骤103,遍历用户拥有的全部角色,然后将角色对应的资源添加到“认证用户拥有资源集”,并去掉重复的资源,转到步骤104。步骤104,遍历用户拥有的普通资源集,并将资源集中的资源逐一地与“查看项目信息”进行精确比较,如匹配成功则转到步骤108,执行“查询项目信息”,否则转到步骤106进行正则表达式匹配。步骤106,遍历用户拥有的表达式资源集,并将资源集中的资源逐一地与“查看项目信息”做正则匹配,如匹配成功则转到步骤108,执行“查询项目信息”。否则转到步骤109。步骤108,执行“查询项目信息”操作,并获得相应的结果数据。步骤109,判断用户的请求类型,如果为同步请求,则转到步骤110。否则直接返回数据给请求者,然后等待用户的下一个请求。步骤110,根据上下文中的用户资源关系数据,用回溯算法生成对应的被授权菜单结构,和结果数据一并返回给用户,等待用户的下一个请求。综上所述,采用本发明的系统和方法实现Web应用的资源验证与权限控制,既能保证权限验证与认证链的处理性能,也能保证权限验证的准确性。而且先资源验证再进行业务处理,且对业务模块 零侵入。本发明使web应用的统一资源验证与权限控制的实时性、安全性、稳定性、可扩展性大大提高。显然,本领域的技术人员可以对本申请中的实施例进行各种改动和变型而不脱离本申请的方法和范围。这样,倘若本申请实施例中的这些修改和变型属于本申请权利要求及其等同技术的范围之 内,则本申请的实施例也意图包含这些改动和变型在内。
权利要求
1.一种基于web应用的资源验证方法,其特征在于,包括: 步骤1:接收来自客户端的用户对资源的业务请求; 步骤2:判断该资源是否需要验证; 步骤3:响应于该资源需要验证,根据用户信息生成用户拥有资源集; 步骤4:将该用户拥有资源集放入资源验证用的上下文数据中; 步骤5:读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;以及 步骤6:响应于匹配成功,则从所述上下文数据中读取用户请求的资源,执行该资源对应的业务操作。
2.根据权利要求1所述的基于web应用的资源验证方法,其特征在于,所述步骤3还包括: 步骤3-1:响应于该资源需要验证,进一步对用户身份进行认证;以及 步骤3-2:响应于用户身份认证成功,根据用户信息生成用户拥有资源集。
3.根据权利要求2所述的基于web应用的资源验证方法,其特征在于,在所述步骤3-1中通过所述请 求携带的cookie或session信息来对用户身份进行认证。
4.根据权利要求1所述的基于web应用的资源验证方法,其特征在于,所述步骤3还包括: 步骤3-3:响应于该资源需要验证,根据用户信息且基于预先存储的用户-角色基础数据和角色-资源关系数据,获取该用户对应的资源集合;以及 步骤3-4:去除该资源集合中的重复的资源,生成用户拥有资源集。
5.根据权利要求1所述的基于web应用的资源验证方法,其特征在于,所述步骤2还包括: 如果请求的所述资源在预先设置的待验证资源池中,则判定需要对该资源进行认证。
6.根据权利要求1所述的基于web应用的资源验证方法,其特征在于,所述步骤5还包括: 步骤5-1:通过精确匹配来对用户请求的资源与所述用户拥有资源集中的资源进行匹配。
7.根据权利要求6所述的基于web应用的资源验证方法,其特征在于,所述步骤5还包括: 步骤5-2:响应于精确匹配失败,进一步通过表达式匹配来对用户请求的资源与所述用户拥有资源集中的资源进行匹配。
8.根据权利要求1所述的基于web应用的资源验证方法,其特征在于,在所述步骤6之后还包括: 步骤7:响应于所述业务操作操作执行完毕,根据所述上下文数据中的用户拥有资源集生成菜单结构,并响应给客户端。
9.根据权利要求8所述的基于web应用的资源验证系统,其特征在于,所述步骤7还包括: 步骤7-1:响应于所述业务操作执行完毕,判断所述请求是否为同步请求; 步骤7-2:响应于判断所述请求为异步请求,发送执行结果至所述客户端;以及步骤7-3:响应于判断所述请求为同步请求,根据所述上下文数据中的用户拥有资源集生成菜单结构,并响应给客户端。
10.一种基于web应用的资源验证系统,其特征在于,包括: 统一认证单元,统一认证单元接收来自客户端的用户对资源的业务请求,如果该资源需要认证,则根据用户信息生成用户拥有资源集,且将用户拥有资源集放入资源验证用的上下文数据中; 资源验证单元,资源验证单元响应于该资源需要认证,而读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;以及 用户行为及业务执行单元,用户行为及业务执行单元响应于资源匹配成功,而执行该资源对应的业务操作。
11.根据权利要求10所述的基于web应用的资源验证系统,其特征在于,所述统一认证单元进一步包括: 响应于该资源需要验证,进一步对用户身份进行认证;以及 响应于用户身份认证成功,根据用户信息生成用户拥有资源集。
12.根据权利要求11所述的基于web应用的资源验证系统,其特征在于,所述统一认证单元通过所述请求携带的cookie或session信息来对用户身份进行认证。
13.根据权利要求10所述的基于web应用的资源验证系统,其特征在于,进一步包括:存储有预先设定的用户-角色基础数据和角色-资源关系数据的初始化及动态维护单元, 其中,所述统一认证单元进一步包括: 响应于该资源需要验证,根据用户信息,从所述初始化及动态维护单元获取针对该用户的资源集合;以及 去除该资源集合中的重复的资源,生成用户拥有资源集。
14.根据权利要求10所述的基于web应用的资源验证系统,其特征在于,所述统一认证单元进一步包括: 如果请求的所述资源在预先设置的待验证资源池中,则判定需要对该资源进行认证。
15.根据权利要求10所述的基于web应用的资源验证系统,其特征在于,所述资源验证单元进一步包括: 通过精确匹配来对用户请求的资源与所述用户拥有资源集中的资源进行匹配。
16.根据权利要求15所述的基于web应用的资源验证系统,其特征在于,所述资源验证单元进一步包括: 响应于精确匹配失败,进一步通过表达式匹配来对用户请求的资源与所述用户拥有资源集中的资源进行匹配。
17.根据权利要求10所述的基于web应用的资源验证系统,其特征在于,还包括菜单生成单元,其中, 所述菜单生成单元响应于所述业务操作操作执行完毕,根据所述上下文数据中的用户拥有资源集生成菜单结构,并响应给客户端。
18.根据权利要求17所述的基于web应用的资源验证系统,其特征在于,所述用户行为和业务执行单元进一步包括: 响应于所述业务操作执行完毕,判断所述请求是否为同步请求;响应于判断所述请求为异步请求,发送执行结果至所述客户端;以及响应于判断所述请求为同步请求,根据所述上下文数据中的用户拥有资源集生成菜单结构,并响应给 客户端。
全文摘要
一种基于web应用的资源验证系统和方法,所述方法包括接收来自客户端的用户对资源的业务请求;判断该资源是否需要验证;响应于该资源需要验证,根据用户信息生成用户拥有资源集;将该用户拥有资源集放入资源验证用的上下文数据中;读取所述上下文数据,将用户请求的资源与所述用户拥有资源集中的资源相匹配;响应于匹配成功,则从所述上下文数据中读取用户请求的资源,执行该资源对应的业务操作。本发明能够准确、统一地进行web资源验证,并对资源的权限进行精细化控制。
文档编号H04L29/06GK103220289SQ201310128360
公开日2013年7月24日 申请日期2013年4月15日 优先权日2013年4月15日
发明者谭龙 申请人:北京京东尚科信息技术有限公司