[发明专利]一种基于反向代理模式的访问控制方法有效
申请号: | 201811241311.1 | 申请日: | 2018-10-24 |
公开(公告)号: | CN109120722B | 公开(公告)日: | 2021-12-07 |
发明(设计)人: | 刘康涛 | 申请(专利权)人: | 北京计算机技术及应用研究所 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/06;H04L9/06 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 王雪芬 |
地址: | 100854*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 反向 代理 模式 访问 控制 方法 | ||
1.一种基于反向代理模式的访问控制方法,其特征在于,包括以下步骤:
步骤一、对角色的权限、资源与角色关系进行设计:
在设置资源时,将资源与一个或多个角色相关联,同时角色也与同一个或多个资源进行关联,资源和角色之间是多对多的关系,当用户拥有一个角色时,该用户对于和该角色关联的资源进行的访问都是合法的,当用户不拥有该角色时,该用户对该角色关联的资源进行的访问都是非法的;资源与角色之间的关联是动态的,资源可在原有关联角色的基础上增加新的关联角色或减少关联角色,角色也可以在原有关联的资源基础上增加或减少关联的资源,一个资源可以分属不同的角色,一个角色可以拥有不同的资源;
步骤二、对用户的权限进行设计:
用户属于一个用户组,用户可以完整继承该用户组所拥有的角色,一个用户只能存在一个用户组中,不能同时属于不同的用户组;
用户组可以同时拥有不同的角色,同一个角色也可属于不同的用户组与角色之间属于多对多的关系,并且这种关系是动态的,角色与用户组之间的联系可以改变;用户除了从所属的用户组继承而来的角色外,还可单独配置自己的角色,用户实际拥有的角色为所属用户组的角色与单独配置的角色的并集,这个并集为该用户拥有的所有角色,通过该角色的并集查找资源就可确定该用户可以合法访问的资源;
步骤三、设计反向代理模块:
反向代理模块通过自身开放请求入口,将真实服务器隐藏,用户无法直接访问在反向代理模块之后的真实服务器,只能通过反向代理模块间接访问真实服务器上的资源,反向代理模块并不直接转发用户请求,而是首先将用户请求的报文进行解包处理,分析其中的请求内容,然后根据用户的请求内容重新组合新的请求报文发往真实服务器,此时的源已经变为反向代理模块,目的是真实服务器;在反向代理模块解析阶段可获得用户请求的全部内容,并且新的请求报文是由反向代理模块重新组合的;在解包分析之后新的请求报文组合之前加上策略就可以实现访问控制功能;
步骤四、对授权管理模块进行设计:授权管理模块是单独的一个进程,用来管理注册用户的信息,用户登陆时,存储登陆用户的信息,并执行用户登陆超时管理及请求的合法性检查功能;授权管理模块在用户登陆时会根据登陆用户的角色确定该用户的合法访问资源,并将关于登陆用户的一些信息及全部可合法访问的资源的特征存入一张登陆用户的哈希表中;
步骤五、基于步骤一至步骤四的设计执行访问控制流程;
步骤五包括以下步骤:
在客户端请求阶段,客户端发往反向代理模块的请求中携带有授权管理颁发的用户登录凭证信息,该凭证信息作为登录凭证是在用户登录成功后由授权管理模块计算出的一个随机值的计算结果,授权管理模块保证凭证信息是唯一的,客户端与反向代理模块之间是加密连接的;
在反向代理模块解析阶段,反向代理模块以多线程的方式运行,当客户端请求到达反向代理模块时,主线程根据各线程的繁忙情况将请求分发给相应的线程,在反向代理模块向授权管理模块验证权限的阶段,反向代理模块中的每个线程都保有一个与授权管理模块的加密长连接,反向代理模块与授权管理模块之间同时存在多个长连接进行数据交换,反向代理模块启动时会向授权管理模块请求连接,在反向代理模块发送的链接信息中带有反向代理模块的标识及反向代理模块本身的信息,当授权管理模块的接入策略允许带有该标识和信息的反向代理模块进行接入时,授权管理模块接受此次连接请求,并与反向代理模块建立加密的长连接,反向代理模块解密客户端发送的请求之后,筛选出客户端携带的用户凭证,客户本次请求访问的资源并携带时间戳发送到授权管理模块中进行权限的确定;
授权管理模块中存放有用户、用户组、角色、资源的全部配置,当一个用户登录时,反向代理模块将用户登录信息发送到授权管理模块中,授权管理模块通过比对登录信息确认用户登录成功后,根据用户登录信息查找到用户组,再次根据用户登录信息和用户组信息查找到该用户所拥有的所有角色,然后根据角色查找到该用户所能合法访问的所有资源,授权管理模块产生一个随机值并进行计算,将结果作为该用户的登录凭证发往反向代理模块并最终发往请求登录的客户端,同时使用哈希表来存储用户名及该用户可访问的所有资源并使用该用户的登录凭证作为哈希查找时的索引,当已登录用户的请求进行权限确定操作时,反向代理模块将用户请求中携带的登录凭证、访问的资源、时间戳信息发送到授权管理模块,授权管理模块以登录凭证为索引查找到该用户在已登录用户哈希表中的节点,在登录节点中资源以链表的形式存放,授权管理模块遍历资源链表,通过本次请求的资源与资源链表中的合法资源进行比对,如果此资源在合法资源范围内则该请求合法,否则该请求非法,资源比对的结果发送回反向代理模块;
反向代理模块在得到权限验证结果后,如果结果是此请求非法,反向代理模块将终止本次请求,并向客户端发送提示消息提示访问非法,如果结果是此请求合法,反向代理模块继续原有流程,将解析的用户请求信息以反向代理模块为源,以服务器为目的重新组装成新的请求信息发往服务器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京计算机技术及应用研究所,未经北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811241311.1/1.html,转载请声明来源钻瓜专利网。