微服务架构下的权限控制方法、系统和访问令牌技术方案

技术编号:23860174 阅读:31 留言:0更新日期:2020-04-18 13:22
本发明专利技术涉及一种微服务架构下的权限控制方法、系统和访问令牌,以解决微服务架构中各资源服务频繁请求认证服务和认证服务频繁查询数据库以获取当前用户权限信息带来的效率低下的问题。本发明专利技术的技术方案是:客户端获取认证服务器返回的包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;客户端携带访问令牌向API网关发送资源请求;API网关对访问令牌进行安全认证,并在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;微服务根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。

Authority control method, system and access token under microservice architecture

【技术实现步骤摘要】
微服务架构下的权限控制方法、系统和访问令牌
本专利技术涉及一种微服务架构下的权限控制方法、系统和访问令牌。适用于微服务

技术介绍
近年来互联网行业快速发展,互联网应用的规模迅速扩大,同时单个应用的开发人员也大大增加,传统单体架构因耦合度高、难以维护和快速部署等原因逐渐被微服务架构所替代。微服务架构的原理是将系统拆分为多个可以独立开发、设计、运行和运维的服务,服务之间通过应用程序编程接口(ApplicationProgrammingInterface,API)调用,每个服务可以独立部署并且相互隔离,同时可以根据服务提供的功能选择最优的编程语言,数据库等不同的技术栈,提高系统的可扩展性和可维护性,更好的支持持续集成和持续交付。由于微服务具有以上优势,而且能更加适应云环境的特点,越来越多的公司开始尝试原有单体架构系统重构。微服务架构中通常需要一个独立的认证服务来提供认证功能,保护原有的单体架构拆分出的所有微服务资源,并且可以认证请求来源的不同授予不同的资源访问权限,更好的保护微服务资源。通常的做法是用户登录时客户端请求认证服务获取访问令牌,并在请求各服务资源时携带访问令牌。被请求服务拿到访问令牌后向认证服务获取该访问令牌对应的用户的权限信息,当用户有访问该资源的权限时响应用户请求,当用户无相应权限时返回请求无权限。该方式使得其他微服务需频繁访问认证服务以获取权限信息,如何减少其他服务对认证服务的依赖,降低各服务间的耦合度并减少数据库(包括缓存数据库)查询操作,提高系统整体效率是微服务架构认证鉴权体系的一个关键问题。
技术实现思路
本专利技术要解决的技术问题是:针对上述存在的问题,提供一种微服务架构下的权限控制方法、系统和访问令牌,以解决微服务架构中各资源服务频繁请求认证服务和认证服务频繁查询数据库以获取当前用户权限信息带来的效率低下的问题。本专利技术所采用的技术方案是:一种微服务架构下的权限控制方法,其特征在于:客户端获取认证服务器返回的包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;客户端携带访问令牌向API网关发送资源请求;API网关对访问令牌进行安全认证,并在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;微服务根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。所述访问令牌具有N片令牌分片,N根据权限比特流位数确定;所述令牌分片包括:头部信息:存放访问令牌的类型和算法名称的JSON字符串;基本信息:存放令牌过期时间、用户名、自定义信息的JSON字符串;权限信息:存放分片比特流,该分片比特流由权限比特流拆分成N份后分别存入N片令牌分片中;分片信息:存放访问令牌的分片数量N和当前分片序号的JSON字符串;签名信息:存放头部信息、基本信息、权限信息和分片信息经过编码和非对称加密后得到的字符串,可用公钥解密验证头部信息、基本信息、权限信息和分片信息数据的有效性。所述微服务的各个需要权限控制的接口带有自定义权限注解,该自定义权限注解中存储该接口资源所需权限对应比特位在权限比特流中的位置序号。一种微服务架构下的权限控制系统,其特征在于,包括认证服务器、客户端、API网关和微服务;所述认证服务器具有:登录认证模块,用于认证客户端发送的登录请求;令牌生成模块,用于在登录请求认证正确后生成包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;所述客户端具有:登录请求模块,用于向认证服务器发送登录请求,并获取认证服务器返回的访问令牌;资源请求模块,用于携带访问令牌向API网关发送资源请求;所述API网关具有:安全认证模块,用于对访问令牌进行安全认证;转发模块,用于在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;所述微服务具有:权限验证模块,用于根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。所述访问令牌具有N片令牌分片,N根据权限比特流位数确定;所述令牌分片包括:头部信息:存放访问令牌的类型和算法名称的JSON字符串;基本信息:存放令牌过期时间、用户名、自定义信息的JSON字符串;权限信息:存放分片比特流,该分片比特流由权限比特流拆分成N份后分别存入N片令牌分片中;分片信息:存放访问令牌的分片数量N和当前分片序号的JSON字符串;签名信息:存放头部信息、基本信息、权限信息和分片信息经过编码和非对称加密后得到的字符串,可用公钥解密验证头部信息、基本信息、权限信息和分片信息数据的有效性。所述微服务的各个需要权限控制的接口带有自定义权限注解,该自定义权限注解中存储该接口资源所需权限对应比特位在权限比特流中的位置序号。一种访问令牌,其特征在于:包含权限比特流,该权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态。包括N片令牌分片,N根据权限比特流位数确定;所述令牌分片包括:头部信息:存放访问令牌的类型和算法名称的JSON字符串;基本信息:存放令牌过期时间、用户名、自定义信息的JSON字符串;权限信息:存放分片比特流,该分片比特流由权限比特流拆分成N份后分别存入N片令牌分片中;分片信息:存放访问令牌的分片数量N和当前分片序号的JSON字符串;签名信息:存放头部信息、基本信息、权限信息和分片信息经过编码和非对称加密后得到的字符串,可用公钥解密验证头部信息、基本信息、权限信息和分片信息数据的有效性。根据权限表的权限比特流的位数确定访问令牌的分片数量N;将加密方法名和令牌类型存入各个分片的头部信息部分;将令牌过期时间、用户名、自定义信息存入第一个分片的基本信息部分;将用户的权限比特流进行拆分成N份后分别存入各个令牌分片的权限信息部分;将分片数量、当前分片的序号存入各个令牌分片的分片信息;将各个令牌分片中头部信息、基本信息、权限信息和分片信息进行编码;将各个令牌分片中头部信息、基本信息、权限信息和分片信息进行非对称加密后得到的字符串存入相应令牌分片的签名信息部分;连接各个令牌分片中的头部信息、基本信息、权限信息、分片信息和签名信息,得到访问令牌的各个令牌分片。所述用户的权限比特流采用以下方法得到:从数据库中查询该用户拥有的所有角色和各个角色对应的权限比特流;对该用户所有角色的权限比特流进行逻辑运算,得到用户的权限比特流。本专利技术的有益效果是:本专利技术中用户的权限信息本文档来自技高网
...

【技术保护点】
1.一种微服务架构下的权限控制方法,其特征在于:/n客户端获取认证服务器返回的包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;/n客户端携带访问令牌向API网关发送资源请求;/nAPI网关对访问令牌进行安全认证,并在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;/n微服务根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。/n

【技术特征摘要】
1.一种微服务架构下的权限控制方法,其特征在于:
客户端获取认证服务器返回的包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;
客户端携带访问令牌向API网关发送资源请求;
API网关对访问令牌进行安全认证,并在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;
微服务根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。


2.根据权利要求1所述的微服务架构下的权限控制方法,其特征在于:所述访问令牌具有N片令牌分片,N根据权限比特流位数确定;
所述令牌分片包括:
头部信息:存放访问令牌的类型和算法名称的JSON字符串;
基本信息:存放令牌过期时间、用户名、自定义信息的JSON字符串;
权限信息:存放分片比特流,该分片比特流由权限比特流拆分成N份后分别存入N片令牌分片中;
分片信息:存放访问令牌的分片数量N和当前分片序号的JSON字符串;
签名信息:存放头部信息、基本信息、权限信息和分片信息经过编码和非对称加密后得到的字符串,可用公钥解密验证头部信息、基本信息、权限信息和分片信息数据的有效性。


3.根据权利要求1或2所述的微服务架构下的权限控制方法,其特征在于:所述微服务的各个需要权限控制的接口带有自定义权限注解,该自定义权限注解中存储该接口资源所需权限对应比特位在权限比特流中的位置序号。


4.一种微服务架构下的权限控制系统,其特征在于,包括认证服务器、客户端、API网关和微服务;
所述认证服务器具有:
登录认证模块,用于认证客户端发送的登录请求;
令牌生成模块,用于在登录请求认证正确后生成包含权限比特流的访问令牌;权限比特流为固定位数的二进制串,该二进制串位数根据系统权限数量确定,二进制串中的各个比特位与系统中的权限一一对应,比特位的值代表相应权限的状态;
所述客户端具有:
登录请求模块,用于向认证服务器发送登录请求,并获取认证服务器返回的访问令牌;
资源请求模块,用于携带访问令牌向API网关发送资源请求;
所述API网关具有:
安全认证模块,用于对访问令牌进行安全认证;
转发模块,用于在认证通过后将资源请求转发到相应微服务,转发时携带访问令牌;
所述微服务具有:
权限验证模块,用于根据访问令牌中权限比特流上与所请求资源对应的比特位的值验证权限。


5.根据权利要求4所述的微服务架构下的权限控制系统,其特征在于:所述访问令牌具有N片令牌分片,N根据权限比特流位数确定;
所述令牌分片包括:
头部信息:存放访问令牌的类型和算法名...

【专利技术属性】
技术研发人员:陈敏王国光杨晨张成涛杨阳柳晓阳远建平
申请(专利权)人:中国电建集团华东勘测设计研究院有限公司浙江华东工程数字技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1