CN111444500A - 鉴权方法、装置、设备及可读存储介质 - Google Patents
鉴权方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111444500A CN111444500A CN202010137075.XA CN202010137075A CN111444500A CN 111444500 A CN111444500 A CN 111444500A CN 202010137075 A CN202010137075 A CN 202010137075A CN 111444500 A CN111444500 A CN 111444500A
- Authority
- CN
- China
- Prior art keywords
- authentication
- preset
- api
- authority
- annotation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及安全技术领域,公开了一种鉴权方法,包括以下步骤:接收终端的访问请求,将访问请求发送至权限管理服务器,并接收权限管理服务器返回的鉴权结果;根据所述鉴权结果获取终端所有应用程序的API权限;解析API权限中的扫描注解得到属性值,并将属性值添加到预先设置的API权限集合中;将添加有属性值的API权限集合发送至权限管理服务器,接收权限管理服务器返回的预置鉴权集合;判断预置鉴权集合中是否存在鉴权结果;若预置鉴权集合中存在鉴权结果,则判定访问请求鉴权通过。本发明还公开了一种鉴权装置、设备及可读存储介质。本发明提供的鉴权方法提高了鉴权效率。
Description
技术领域
本发明涉及访问规则技术领域,尤其涉及一种鉴权方法、装置、设备及可读存储介质。
背景技术
目前,现有的权限控制设计照搬单体应用的设计,导致每个微服务应用都要自己开发一套权限控制系统,造成工作上的冗余,最重要的是缺乏一整套完整的方案,目前的做法都是依据当前项目需求来设计和开发的,设计和功能都不完善,有新需求时,则需要经常进行修补,缺少易用性、通用性和完整性。现有的技术中微服务架构下系统会被拆分成若干个微服务或微应用,每个微应用都需要对访问进行鉴权,每个微应用都需要明确当前访问用户以及其权限,现有的鉴权方式效率低下,主要原因是现有技术照搬单体应用的设计,导致每个微服务应用都要自己开发一套权限控制,即采用分散式的鉴权方法,此种方法会造成工作上的冗余,每次新增或者修改API权限都需要通过人工添加相关的配置,因此花费较高维护成本,而且还容易操作出错。综上,现有的分散式的鉴权方法不便于鉴权,且鉴权效率低下。
发明内容
本发明的主要目的在于提供一种鉴权方法、装置、设备及可读存储介质,旨在解决鉴权效率低的技术问题。
为实现上述目的,本发明提供一种鉴权方法,所述鉴权方法包括以下步骤:
接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;
根据所述鉴权结果获取终端所有应用程序的API权限;
解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;
将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;
判断所述预置鉴权集合中是否存在所述鉴权结果;
若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。
可选地,所述解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中,具体包括:
通过软件开发工具包获取所述API权限中的扫描注解;
判断获取到的所述扫描注解是否为预先设置的扫描注解;
若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中。
可选地,所述解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中,具体包括:
解析所述API权限中的扫描注解得到属性值,根据所述属性值判断所述扫描注解是否为异常注解,其中,所述异常注解包括缺少Swagger注解、Swagger注解中的属性值错误、属性值不完整和属性值发生变更中的至少一种;
若否,则将所述属性值通过反向扫描添加至预先设置的API权限集合中。
可选地,在所述将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合之后,在所述判断所述预置鉴权集合中是否存在所述鉴权结果之前,还包括:
判断预先设置的API权限集合中的API权限是否配置有预置属性值;
若预先设置的API权限集合中的API权限配置有预置属性值,则将配置有预置属性值的所述API权限添加到数据库。
可选地,在所述接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果之前,还包括:
通过认证中心接收所述终端的登录参数;
验证所述登录参数中的用户名和密码是否正确;
若所述登录参数中的用户名和密码正确,则获取与所述登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对所述用户信息进行加密,并把所述令牌token写入到所述存储中心cookie中。
可选地,在所述若所述登录参数中的用户名和密码正确,则获取与所述登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对所述用户信息进行加密,并把所述令牌token写入到所述存储中心cookie中之后还包括:
通过预置公钥对所述用户信息进行解密;
将解密后的所述用户信息存储于所述访问请求头部。
可选地,在所述接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果之前,还包括:
通过预先设置的自动化执行脚本在终端的应用程序编程接口添加权限注解。
进一步地,为实现上述目的,本发明还提供一种鉴权装置,所述鉴权装置包括以下模块:
鉴权结果接收模块,用于接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;
扫描模块,用于根据所述鉴权结果获取终端所有应用程序的API权限;
添加模块,用于解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;
反馈结果接收模块,用于将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;
鉴权结果判断模块,用于判断所述预置鉴权集合中是否存在所述鉴权结果;
鉴权模块,用于若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。
可选地,所述添加模块包括:
扫描注解获取单元,用于通过软件开发工具包获取所述API权限中的扫描注解;
扫描注解判断单元,用于判断获取到的所述扫描注解是否为预先设置的扫描注解;
属性值添加单元,用于若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中。
可选地,所述属性值添加单元用于:
若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,根据所述属性值判断所述扫描注解是否为异常注解,其中,所述异常注解包括缺少Swagger注解、Swagger注解中的属性值错误、属性值不完整和属性值发生变更中的至少一种;
若所述扫描注解为异常注解,则将所述属性值通过反向扫描添加至预先设置的API权限集合中。
可选地,所述鉴权装置还包括:
预置属性值判断模块,用于判断预先设置的API权限集合中的API权限是否配置有预置属性值;
API权限添加模块,用于若预先设置的API权限集合中的API权限配置有预置属性值,则将配置有预置属性值的所述API权限添加到数据库。
可选地,所述鉴权装置还包括:
登录参数接收模块,用于通过认证中心接收所述终端的登录参数;
验证模块,用于验证所述登录参数中的用户名和密码是否正确;
加密模块,用于若所述登录参数中的用户名和密码正确,则获取与所述登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对所述用户信息进行加密,并把所述令牌token写入到所述存储中心cookie中。
可选地,所述鉴权装置还包括:
解密模块,用于通过预置公钥对所述用户信息进行解密;
存储模块,用于将解密后的所述用户信息存储于所述访问请求头部。
可选地,所述鉴权装置还包括:
通过预先设置的自动化执行脚本在终端的应用程序编程接口添加权限注解。
进一步地,为实现上述目的,本发明还提供一种鉴权设备,所述鉴权设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的鉴权程序,所述鉴权程序被所述处理器执行时实现如上述任一项所述的鉴权方法的步骤。
进一步地,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有鉴权程序,所述鉴权程序被处理器执行时实现如上述任一项所述的鉴权方法的步骤。
本发明先通过接收终端的访问请求,将访问请求发送至权限管理服务器,再通过权限管理服务器对请求进行集中式鉴权,得到鉴权结果,再根据鉴权结果获取应用程序编程接口API权限,在解析API权限中的扫描注解后得到属性值,并将属性值添加到预先设置的API权限集合中,将添加有属性值的API权限集合发送至权限管理服务器,接收权限管理服务器返回的预置鉴权集合,预置鉴权集合是预先设置好的,预置鉴权集合可以包括多个预先设置好的鉴权结果,因此可以涵盖到对多种或多个访问请求的鉴权,当预置鉴权集合中存在与由访问请求而获取到的鉴权结果相匹配的鉴权结果时,则可以判定访问请求鉴权通过,采用集中式鉴权,可提高鉴权效率。
附图说明
图1为本发明实施例方案涉及的鉴权设备运行环境的结构示意图;
图2为本发明鉴权方法的第一实施例的流程示意图;
图3为图2中步骤30的一个实施例的细化流程示意图;
图4为图3中步骤303的一个实施例的细化流程示意图;
图5为本发明鉴权方法的第二实施例的流程示意图;
图6为本发明鉴权方法的第三实施例的流程示意图;
图7为本发明鉴权方法的第四实施例的流程示意图;
图8为本发明鉴权方法的第五实施例的流程示意图;
图9为本发明鉴权装置的一个实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的鉴权方法主要应用于鉴权设备,该鉴权设备可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的鉴权设备的硬件结构示意图。本发明实施例中,鉴权设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对鉴权设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种可读存储介质的存储器1005可以包括操作系统、网络通信模块以及鉴权程序。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的鉴权程序,并执行本发明实施例提供的鉴权方法。
本发明实施例提供了一种鉴权方法。
参照图2,图2为本发明鉴权方法的第一实施例的流程示意图。本实施例中,鉴权方法包括:
步骤S10,接收终端的访问请求,将访问请求发送至权限管理服务器,并接收权限管理服务器返回的鉴权结果;
本实施例中,访问请求来自于终端,为了鉴权需要先将访问请求发送至服务端,此处的服务端包括资源服务器和权限管理服务器,其中,资源服务器用于将访问请求转发至权限管理服务器,权限管理服务器接收到访问请求后,会对其待访问的权限进行鉴别,并将鉴别的结果反馈给资源服务器,资源服务器接收鉴别的结果,并根据鉴别的结果确定是否具有访问的权限。
服务端指的是后端的服务器,现有技术中,一般是单一类型的服务器,本实施中从前端访问到后端的过程与现有技术相同,区别技术特征为,现有的有单一类型的服务器,本发明有两种类型的服务器,第一类型的为传统的一般服务器,即资源服务器,第二类型的为实现集中鉴权的服务器,即权限管理服务器。
预先将用户ID、用户类型和角色信息添加到访问请求header中,以及转发请求给资源服务器。若终端存在携带持久化令牌token的访问请求,则在网关层解析token,得到用户ID、用户类型和角色信息。
资源服务器解析访问请求,访问请求中包含统一资源定位符(uniform resourcelocator,URL)信息和请求动词,最终获取解析后的参数。解析后的参数来自于预先对访问请求的注解,解析访问请求中的注解后,会得到与注解相关的参数。
通过权限管理服务器接收解析后的参数,根据预置的不同的参数与鉴权的规则来判断是否需要鉴权,例如,在检测到解析后的参数中出现“鉴权”时,则进行鉴权,并判断是否有权访问,当没有出现“鉴权”时,则说明不要鉴权。
当需要鉴权时,则通过资源服务器将当前信息发送给权限管理服务端,其中需要鉴权的信息包括:请求URL、请求method、用户ID、用户类型和应用ID。其中鉴权结果来自于通过权限管理服务端根据从数据库或者缓存中取出的权限信息确定当前信息是否有权限,鉴权结果包括:无权限访问和有权限访问,当前信息包括:请求URL、请求method、用户ID、用户类型和应用ID。
步骤S20,根据鉴权结果获取终端所有应用程序的API权限;
本实施例中,由权限管理服务器集中鉴权后,可得到鉴权结果,根据API权限与鉴权结果之间的预先设置的映射关系,可以获取到API权限。
步骤S30,解析API权限中的扫描注解得到属性值,并将属性值添加到预先设置的API权限集合中;
本实施例中,API权限可包括多种扫描注解,例如@ApiOperation、@RequestMapping、@PostMapping、@DeleteMapping、@GetMapping、@PutMapping、@PatchMapping。经过解析多种扫描注解后,可获得属性值,例如,扫描@ApiOperation注解,会获取name和notes属性的对应的值。例如扫描@RequestMapping,则获取value和method属性对应的值。为了便于对API权限进行集中管理,因此需要将属性值添加到预先设置的API权限集合中。需要采用到JAVA反射技术,通过预置监听器通过监听的方式获取扫描注解的所有属性值,然后将属性值添加到API权限集合中。
微服务平台的某个模块根据指令执行某个访问时,需通过鉴权过程来确定当前模块是否具备这样访问的权限,检测是否有访问权限的依据是鉴权是否通过。
通过资源服务器接收鉴权结果,然后反馈给终端,其中接收到的鉴权结果来俩自于通过权限管理服务端根据从数据库或者缓存中取出的权限信息确定当前信息是否有权限,因此这些权限是预先配好的并提前存储的,且微服务平台是由多个模块组成的,如果分别单一地为单个模块去鉴权则效率不高,而本发明,不需要根据模块一一去鉴权,而是集中鉴权,可提高鉴权效率。
步骤S40,将添加有属性值的API权限集合发送至权限管理服务器,接收权限管理服务器返回的预置鉴权集合;
本实施例中,API权限的属性值均添加进了预先设置的API权限集合中,在将API权限集合发送至权限管理服务器后,权限管理服务器会对API权限集合进行集中式鉴权,并将获取到的预置鉴权集合发送至资源服务器。
步骤S50,判断预置鉴权集合中是否存在鉴权结果;
本实施例中,可通过依次遍历预置鉴权集合中的各个预置鉴权结果,以判定是否存在与访问请求相对应的鉴权结果。
若预置鉴权集合中存在鉴权结果,则执行步骤S60,判定访问请求鉴权通过。
本实施例中,如果预置鉴权集合中存在与访问请求相对应的鉴权结果,则说明当前的访问请求是被允许的,即判定鉴权通过。
先通过接收终端的访问请求,将访问请求发送至权限管理服务器,再通过权限管理服务器对请求进行集中式鉴权,得到鉴权结果,再根据鉴权结果获取应用程序编程接口API权限,在解析API权限中的扫描注解后得到属性值,并将属性值添加到预先设置的API权限集合中,将添加有属性值的API权限集合发送至权限管理服务器,接收权限管理服务器返回的预置鉴权集合,预置鉴权集合是预先设置好的,预置鉴权集合可以包括多个预先设置好的鉴权结果,因此可以涵盖到对多种或多个访问请求的鉴权,当预置鉴权集合中存在与由访问请求而获取到的鉴权结果相匹配的鉴权结果时,则可以判定访问请求鉴权通过,采用集中式鉴权,可提高鉴权效率。
参照图3,图3为图2中步骤30的一个实施例的细化流程示意图。本实施例中,图2的步骤30包括以下步骤:
步骤301,通过软件开发工具包获取API权限中的扫描注解;
本实施例中,软件开发工具包即SDK,SDK的监听类接收来自客户端的用户请求,将用户请求发送至后端服务器。
步骤302,判断获取到的扫描注解是否为预先设置的扫描注解;
若获取到的扫描注解为预先设置的扫描注解,则执行步骤303,解析API权限中的扫描注解得到属性值,并将属性值添加到预先设置的API权限集合中。
步骤303,若获取到的扫描注解为预先设置的扫描注解,则解API权限中的扫描注解得到属性值,采用到JAVA反射技术将属性值添加到API权限集合中。
通过JAVA反射技术将属性值添加到API权限集合中,实现了对API权限的集中式管理。
参照图4,图4为图3中步骤303的一个实施例的细化流程示意图。本实施例中,图2的步骤303包括以下步骤:
步骤3031,若获取到的扫描注解为预先设置的扫描注解,则解析API权限中的扫描注解得到属性值,根据属性值判断扫描注解是否为异常注解,其中,异常注解包括缺少Swagger注解、Swagger注解中的属性值错误、属性值不完整和属性值发生变更中的至少一种;
本实施例中,为了判定扫描注解是否为异常注解,因此预先设置了判定扫描注解是否为异常注解的规则,即当注解中存在缺少Swagger注解、Swagger注解中的属性值错误、属性值不完整和属性值发生变更中的至少一种情况时,则判定存在异常注解。
若扫描注解为异常注解,则执行步骤S3032,将属性值通过反向扫描添加至预先设置的API权限集合中。
本实施例中,预先整理好的API权限原本是存储在数据库中的,为了使项目中通过spring boot框架开发的Java文件的API权限与数据库中的一致,因此本实施例可在存在异常注解的情况下,将预先整理好的API权限反向扫描进项目中Java文件的API权限,例如,当version值大于项目中设置的version时,采用反向扫描,把API权限的描述信息添加到项目中Java文件中。
在存在异常注解的情况下,将属性值通过反向扫描添加至预先设置的API权限集合中,可实现项目中Java文件的API权限与数据库中的一致。
参照图5,图5为本发明鉴权方法的第二实施例的流程示意图。本实施例中,在图2的步骤S50之前,还包括以下步骤:
步骤S70,判断预先设置的API权限集合中的API权限是否配置有预置属性值;
本实施例中,预置属性值是预先设置好的,可以预先做上标记,遍历预先设置的API权限集合中的所有API权限,以获取所有的属性值,当遍历到的属性值存在标记时,则判定配置有预置属性值。
若预先设置的API权限集合中的API权限配置有预置属性值,则执行步骤S80,将配置有预置属性值的API权限添加到数据库。
本实施例中,在通常情况下,开发人员是不需要了解跟权限相关的东西的,但是传统方式却要求开发人员添加API权限,因为对其了解不深或疏忽大意而比较容易出错,毕竟大部分开发者都不需要清楚API权限的格式、规范和匹配规则,为解决上述容易出错的难题,因此在微服务项目中,引进了SDK权限控制终端,当微服务项目启动时,SDK会自动把API权限扫描入数据库,不需要人工通过页面添加或者通过SQL的形式来添加API权限。例如API权限中的扫描注解为@Permission,则解析@Permission,若解析后的结果中不含属性值ignore,采用反向扫描技术将API权限扫描入数据库。
将配置有预置属性值的API权限添加到数据库,可实现对API权限的整合。
参照图6,图6为本发明鉴权方法的第三实施例的流程示意图。本实施例中,在图2的步骤S10之前,还包括:
步骤S90,通过认证中心接收终端的登录参数;
本实施例中,可通过预置自定义用户名和密码验证程序对用户名和密码进行验证,服务器通过非对称加密算法获取公钥和私钥。
步骤S100,验证登录参数中的用户名和密码是否正确;
若登录参数中的用户名和密码正确,则执行步骤S110,获取与登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对用户信息进行加密,并把令牌token写入到存储中心cookie中。
本实施例中,若验证正确,则通过私钥对用户信息进行加密,以及把token写入到cookie中,否则提示用户重新输入正确的用户名密码,例如,若验证正确,则使用JWT提供的工具用私钥对用户信息进行加密,以及把token写入到cookie中,若否,则提示用户重新输入正确的用户名密码,JSON Web Token(JWT)是跨域身份验证解决方案。
cookie位于用户的计算机上,用来维护用户计算机中的信息,直到用户删除。比如,在网页上登录某个软件时,输入用户名及密码时如果保存为cookie,则每次访问的时候就不需要登录网站了。
把令牌token写入到存储中心cookie中,可实现在每次访问的时候不需要再重新登录。
参照图7,图7为本发明鉴权方法的第四实施例的流程示意图。本实施例中,在图6的步骤S110之后,还包括:
步骤S120,通过预置公钥对用户信息进行解密;
步骤S130,将解密后的用户信息存储于访问请求头部。
本实施例中,由于在微服务集群中包括多个单一的微服务应用,为了实现通过一次验证登录多个微服务应用,因此,可以在登录成功后向其他微服务应用发起登录请求。通过网关层拦截新的登录请求,用公钥对cookie中的token进行解密,可通过检测公钥是否与当前的token是否相匹配,来判断是否解密成功。
若解密成功,则将解密出来的用户信息存储于请求头部,以及将请求转发给其他微服务,其中,服务为微服务群中的微服务,还可将请求转发给微服务频平台的其他模块,可实现一处登录,处处登录。
参照图8,图8为本发明鉴权方法的第五实施例的流程示意图。本实施例中,在图2的步骤S10之前,还包括:
步骤S140,通过预先设置的自动化执行脚本在终端的应用程序编程接口添加权限注解。
本实施例中,获取各个API权限的各项参数,并提取公共参数,基于公共参数设置自动化执行脚本,当存在添加权限注解请求时,通过自动化执行脚本对API权限进行权限注解的添加,得到配置好的API权限。当开发者使用Spring MVC和Swagger时,就可以使用配置好的API权限,不需要关心跟权限相关的任何事情。可提高添加权限注解的效率。
本发明通过采用预先扫描进数据库的权限对微服务平台的上的各个模块进行集中鉴权,既实现了对权限的集中化管理,又实现了集中鉴权,在每个微服务开发中,关于权限控制的工作量大幅度减小。现有技术中,是通过开发人员一对一地对权限进行设置,本方案是将API权限集中扫描入库,将API权限存储与鉴权隔离,这样设置的好处是可实现对API权限的集中存储和集中鉴权,而不是将所有的任务都堆积到一个服务器上,因此可实现负载均衡,提高鉴权的效率,可便于对对权限控制进行统一管理。
参照图9,图9为本发明鉴权装置的一个实施例的功能模块示意图。本实施例中,鉴权装置包括:
鉴权结果接收模块10,用于接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;
扫描模块20,用于根据所述鉴权结果获取终端所有应用程序的API权限;
添加模块30,用于解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;
反馈结果接收模块40,用于将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;
鉴权结果判断模块50,用于判断所述预置鉴权集合中是否存在所述鉴权结果;
鉴权模块60,用于若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。
本实施例中,鉴权结果接收模块10用于接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;扫描模块20用于根据所述鉴权结果获取终端所有应用程序的API权限;添加模块30用于解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;反馈结果接收模块40用于将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;鉴权结果判断模块50用于判断所述预置鉴权集合中是否存在所述鉴权结果;鉴权模块60用于若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。本装置先通过接收终端的访问请求,将访问请求发送至权限管理服务器,再通过权限管理服务器对请求进行集中式鉴权,得到鉴权结果,再根据鉴权结果获取应用程序编程接口API权限,在解析API权限中的扫描注解后得到属性值,并将属性值添加到预先设置的API权限集合中,将添加有属性值的API权限集合发送至权限管理服务器,接收权限管理服务器返回的预置鉴权集合,预置鉴权集合是预先设置好的,预置鉴权集合可以包括多个预先设置好的鉴权结果,因此可以涵盖到对多种或多个访问请求的鉴权,当预置鉴权集合中存在与由访问请求而获取到的鉴权结果相匹配的鉴权结果时,则可以判定访问请求鉴权通过,采用集中式鉴权,可提高鉴权效率。
本发明还提供一种可读存储介质。
本实施例中,所述可读存储介质上存储有鉴权程序,所述鉴权程序被处理器执行时实现如上述任一项实施例中所述的鉴权方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。
Claims (10)
1.一种鉴权方法,其特征在于,所述鉴权方法包括:
接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;
根据所述鉴权结果获取终端所有应用程序的API权限;
解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;
将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;
判断所述预置鉴权集合中是否存在所述鉴权结果;
若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。
2.如权利要求1所述的鉴权方法,其特征在于,所述解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中,具体包括:
通过软件开发工具包获取所述API权限中的扫描注解;
判断获取到的所述扫描注解是否为预先设置的扫描注解;
若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中。
3.如权利要求2所述的鉴权方法,其特征在于,所述若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中,具体包括:
若获取到的所述扫描注解为预先设置的扫描注解,则解析所述API权限中的扫描注解得到属性值,根据所述属性值判断所述扫描注解是否为异常注解,其中,所述异常注解包括缺少Swagger注解、Swagger注解中的属性值错误、属性值不完整和属性值发生变更中的至少一种;
若所述扫描注解为异常注解,则将所述属性值通过反向扫描添加至预先设置的API权限集合中。
4.如权利要求1所述的鉴权方法,其特征在于,在所述将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合之后,在所述判断所述预置鉴权集合中是否存在所述鉴权结果之前,还包括:
判断预先设置的API权限集合中的API权限是否配置有预置属性值;
若预先设置的API权限集合中的API权限配置有预置属性值,则将配置有预置属性值的所述API权限添加到数据库。
5.如权利要求1所述的鉴权方法,其特征在于,在所述接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果之前,还包括:
通过认证中心接收所述终端的登录参数;
验证所述登录参数中的用户名和密码是否正确;
若所述登录参数中的用户名和密码正确,则获取与所述登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对所述用户信息进行加密,并把所述令牌token写入到所述存储中心cookie中。
6.如权利要求5所述的鉴权方法,其特征在于,在所述若所述登录参数中的用户名和密码正确,则获取与所述登录参数存在预置对应关系的用户信息、令牌token和存储中心cookie,通过预置私钥对所述用户信息进行加密,并把所述令牌token写入到所述存储中心cookie中之后还包括:
通过预置公钥对所述用户信息进行解密;
将解密后的所述用户信息存储于所述访问请求头部。
7.如权利要求1-6任一项所述的鉴权方法,其特征在于,在所述接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果之前,还包括:
通过预先设置的自动化执行脚本在终端的应用程序编程接口添加权限注解。
8.一种鉴权装置,其特征在于,所述鉴权装置包括以下模块:
鉴权结果接收模块,用于接收终端的访问请求,将所述访问请求发送至权限管理服务器,并接收所述权限管理服务器返回的鉴权结果;
扫描模块,用于根据所述鉴权结果获取终端所有应用程序的API权限;
添加模块,用于解析所述API权限中的扫描注解得到属性值,并将所述属性值添加到预先设置的API权限集合中;
反馈结果接收模块,用于将添加有所述属性值的所述API权限集合发送至权限管理服务器,接收所述权限管理服务器返回的预置鉴权集合;
鉴权结果判断模块,用于判断所述预置鉴权集合中是否存在所述鉴权结果;
鉴权模块,用于若所述预置鉴权集合中存在所述鉴权结果,则判定所述访问请求鉴权通过。
9.一种鉴权设备,其特征在于,所述鉴权设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的鉴权程序,所述鉴权程序被所述处理器执行时实现如权利要求1-7中任一项所述的鉴权方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有鉴权程序,所述鉴权程序被处理器执行时实现如权利要求1-7中任一项所述的鉴权方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010137075.XA CN111444500A (zh) | 2020-03-02 | 2020-03-02 | 鉴权方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010137075.XA CN111444500A (zh) | 2020-03-02 | 2020-03-02 | 鉴权方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111444500A true CN111444500A (zh) | 2020-07-24 |
Family
ID=71627065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010137075.XA Pending CN111444500A (zh) | 2020-03-02 | 2020-03-02 | 鉴权方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444500A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035858A (zh) * | 2020-08-28 | 2020-12-04 | 中国建设银行股份有限公司 | Api访问控制方法、装置、设备及介质 |
CN112528198A (zh) * | 2020-11-26 | 2021-03-19 | 福州智象信息技术有限公司 | 一种基于前端的细节权限控制方法、系统、设备及介质 |
CN112597486A (zh) * | 2020-12-24 | 2021-04-02 | 广东广宇科技发展有限公司 | 一种基于Spring的防止重复访问Restful API的方法 |
CN112905918A (zh) * | 2021-03-06 | 2021-06-04 | 上海数依数据科技有限公司 | 一种数据服务汇聚引擎及其管理方法 |
CN112968944A (zh) * | 2021-02-01 | 2021-06-15 | 武汉思普崚技术有限公司 | 一种网络反向管理方法、系统、装置及存储介质 |
CN113568764A (zh) * | 2021-07-29 | 2021-10-29 | 工银科技有限公司 | 用于微服务的用户信息获取方法、装置、设备及介质 |
CN113742746A (zh) * | 2021-08-27 | 2021-12-03 | 北京航天云路有限公司 | 一种基于注解实现的组合鉴权的权限管理系统及方法 |
CN114339630A (zh) * | 2021-11-30 | 2022-04-12 | 度小满科技(北京)有限公司 | 一种用于短信保护的方法和装置 |
CN115422526A (zh) * | 2022-10-31 | 2022-12-02 | 平安银行股份有限公司 | 角色权限管理方法、设备及存储介质 |
-
2020
- 2020-03-02 CN CN202010137075.XA patent/CN111444500A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035858A (zh) * | 2020-08-28 | 2020-12-04 | 中国建设银行股份有限公司 | Api访问控制方法、装置、设备及介质 |
CN112035858B (zh) * | 2020-08-28 | 2023-06-20 | 建信金融科技有限责任公司 | Api访问控制方法、装置、设备及介质 |
CN112528198A (zh) * | 2020-11-26 | 2021-03-19 | 福州智象信息技术有限公司 | 一种基于前端的细节权限控制方法、系统、设备及介质 |
CN112597486A (zh) * | 2020-12-24 | 2021-04-02 | 广东广宇科技发展有限公司 | 一种基于Spring的防止重复访问Restful API的方法 |
CN112968944A (zh) * | 2021-02-01 | 2021-06-15 | 武汉思普崚技术有限公司 | 一种网络反向管理方法、系统、装置及存储介质 |
CN112905918A (zh) * | 2021-03-06 | 2021-06-04 | 上海数依数据科技有限公司 | 一种数据服务汇聚引擎及其管理方法 |
CN113568764A (zh) * | 2021-07-29 | 2021-10-29 | 工银科技有限公司 | 用于微服务的用户信息获取方法、装置、设备及介质 |
CN113742746A (zh) * | 2021-08-27 | 2021-12-03 | 北京航天云路有限公司 | 一种基于注解实现的组合鉴权的权限管理系统及方法 |
CN114339630A (zh) * | 2021-11-30 | 2022-04-12 | 度小满科技(北京)有限公司 | 一种用于短信保护的方法和装置 |
CN115422526A (zh) * | 2022-10-31 | 2022-12-02 | 平安银行股份有限公司 | 角色权限管理方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444500A (zh) | 鉴权方法、装置、设备及可读存储介质 | |
US10270758B2 (en) | Login method, server, and login system | |
US10291631B2 (en) | System for testing computer application | |
CN108923908B (zh) | 授权处理方法、装置、设备及存储介质 | |
CN111556006B (zh) | 第三方应用系统登录方法、装置、终端及sso服务平台 | |
JP5429912B2 (ja) | 認証システム、認証サーバ、サービス提供サーバ、認証方法、及びプログラム | |
US9130937B1 (en) | Validating network communications | |
US8869258B2 (en) | Facilitating token request troubleshooting | |
US7886341B2 (en) | External authentication against a third-party directory | |
US11108803B2 (en) | Determining security vulnerabilities in application programming interfaces | |
CN111625301A (zh) | 幂等处理方法、装置、设备及存储介质 | |
CN110933092A (zh) | 一种基于jwt的单点登录实现方法及装置 | |
CN112860778B (zh) | 桌面应用程序的数据库管理方法、装置、设备和介质 | |
CN113297560A (zh) | 基于区块链的身份认证方法、装置、设备及可读存储介质 | |
CN112838951B (zh) | 一种终端设备的运维方法、装置、系统及存储介质 | |
CN111800426A (zh) | 应用程序中原生代码接口的访问方法、装置、设备及介质 | |
CN111737232A (zh) | 数据库管理方法、系统、装置、设备及计算机存储介质 | |
WO2021078062A1 (zh) | Ssl证书校验方法、装置、设备及计算机存储介质 | |
CN113742676A (zh) | 一种登录管理方法、装置、服务器、系统及存储介质 | |
US20060248578A1 (en) | Method, system, and program product for connecting a client to a network | |
CN114866258A (zh) | 一种访问关系的建立方法、装置、电子设备及存储介质 | |
CN112560003A (zh) | 用户权限管理方法和装置 | |
CN108494749B (zh) | Ip地址禁用的方法、装置、设备及计算机可读存储介质 | |
CN114116448A (zh) | 应用程序的压力测试方法、装置、存储介质及计算机设备 | |
CN114448722A (zh) | 跨浏览器登录方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |