CN113923020A - SaaS多租户架构的微服务鉴权方法、装置、及设备 - Google Patents

SaaS多租户架构的微服务鉴权方法、装置、及设备 Download PDF

Info

Publication number
CN113923020A
CN113923020A CN202111175521.7A CN202111175521A CN113923020A CN 113923020 A CN113923020 A CN 113923020A CN 202111175521 A CN202111175521 A CN 202111175521A CN 113923020 A CN113923020 A CN 113923020A
Authority
CN
China
Prior art keywords
authentication
token
login
request
service
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.)
Granted
Application number
CN202111175521.7A
Other languages
English (en)
Other versions
CN113923020B (zh
Inventor
于翔
朱明�
丁霞
闫挺
陈寿炎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi IoT Technology Co Ltd
Original Assignee
Tianyi IoT Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi IoT Technology Co Ltd filed Critical Tianyi IoT Technology Co Ltd
Priority to CN202111175521.7A priority Critical patent/CN113923020B/zh
Publication of CN113923020A publication Critical patent/CN113923020A/zh
Application granted granted Critical
Publication of CN113923020B publication Critical patent/CN113923020B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及用户鉴权技术,提供了SaaS多租户架构的微服务鉴权方法、装置、设备及介质,响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。实现了将多服务、多层级的鉴权进行整合,实现支持多客户端模式、微服务模式的认证体系,为物联网应用厂商提供可扩展标准化的鉴权方式。

Description

SaaS多租户架构的微服务鉴权方法、装置、及设备
技术领域
本发明涉及用户鉴权技术领域,尤其涉及一种SaaS多租户架构的微服务鉴权方法、装置、计算机设备及存储介质。
背景技术
传统软件交付模式通常基于一套标准软件系统为单个客户提供服务,而SaaS多租户模式基于一套标准软件系统为成百上千的不同客户(又称租户)提供服务。在SaaS多租户模式下多租户共用相同的系统及组件,各租户能够创建多个应用及用户,并需要确保各租户、各用户数据和配置的隔离,从而保证每个租户数据的安全与隐私。
而在微服务架构下,由于微服务分布式、相对独立性等众多特性,每个微服务同样也需要对访问进行权限控制,需要明确当前访问的租户及租户对应的权限。
因此在SaaS多租户架构中,需要考虑租户和服务的鉴权、租户和用户的鉴权、服务和服务的鉴权以及接入外部应用的鉴权方式,传统软件交付模式的单客户鉴权方法显然已经无法适应此模式下的服务,如何能够在SaaS多租户架构下实现支持多层级、多模式的权限管理体系是目前亟待解决的技术问题。
发明内容
本发明实施例提供了一种SaaS多租户架构的微服务鉴权方法、装置、计算机设备及存储介质,旨在解决现有技术中传统软件交付模式的单客户鉴权方法只适用于单客户鉴权场景,无法实现支持多层级、多模式的权限管理体系的问题。
第一方面,本发明实施例提供了一种SaaS多租户架构的微服务鉴权方法,其包括:
响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录;
对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;以及
若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
第二方面,本发明实施例提供了一种SaaS多租户架构的微服务鉴权装置,其包括:
初次登录单元,用于响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录;
第一拦截单元,用于对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;以及
令牌获取单元,用于若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的SaaS多租户架构的微服务鉴权方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的SaaS多租户架构的微服务鉴权方法。
本发明实施例提供了一种SaaS多租户架构的微服务鉴权方法、装置、计算机设备及存储介质,响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。实现了将多服务、多层级的鉴权进行整合,实现支持多客户端模式、微服务模式的认证体系,为物联网应用厂商提供可扩展标准化的鉴权方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的SaaS多租户架构的微服务鉴权方法的应用场景示意图;
图2为本发明实施例提供的SaaS多租户架构的微服务鉴权方法的流程示意图;
图3为本发明实施例提供的SaaS多租户架构的微服务鉴权装置的示意性框图;
图4为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的SaaS多租户架构的微服务鉴权方法的应用场景示意图;图2为本发明实施例提供的SaaS多租户架构的微服务鉴权方法的流程示意图,该SaaS多租户架构的微服务鉴权方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。
如图2所示,该方法包括步骤S101~S103。
S101、响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录。
在本实施例中,是以服务器为执行主体来描述技术方案。在服务器架构中,包括服务网关、统一认证模块、Redis数据库、用户微服务模块,具体为:
服务网关,用于为前台提供后台微服务的聚合,对用户微服务模块资源进行统一管理,提供一个统一的服务出口,有效消除后台微服务之间的耦合。服务网关包含统一鉴权模块,所述统一鉴权模块构建访问拦截器,负责所有请求的鉴权以及校验应用客户端Token(令牌,下同)令牌的合法性。服务网关对微服务资源进行统一管理,提供一个统一的服务出口,有效消除后台微服务之间的耦合:即将用户管理、统一鉴权、统一认证、日志管理等公共服务模块单独抽离,构建公用的微服务模块,引入Nacos注册中心(Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台),所构建的公用微服务模块在Nacos进行注册,供服务网关进行统一管理及分配,后端的用户微服务模块只需要访问服务网关,即实现登录认证、鉴权等功能,有效地消除后台微服务之间的耦合。
统一认证模块构建基于OAuth2标准(Open Authorization,即安全的、开放而又简易的标准,下同)认证授权协议的授权服务器,负责登录认证、Token派发、Token刷新、应用接入管理等功能,并拓展多级别登录、多类型鉴权方式,多级别登录包括租户级别登录、租户创建的项目用户级别登录,多类型鉴权方式包括账号密码登录鉴权、手机验证码登录鉴权以及Token鉴权。
Redis数据库是基于Redis(远程字典服务,下同)缓存技术,用于存储统一认证模块返回的Token,验证每次请求携带的Token数据。
用户微服务模块用于创建租户及租户对应的项目用户(又称用户)、用户角色、用户权限,所述项目用户与所述项目对应;同时对租户信息、用户信息进行加密,提供授权服务器身份校验时的用户信息。租户信息由用户在系统中注册生成,而项目用户则由租户自行创建。
用户初次登陆服务器的认证过程时客户端先携带认证参数访问服务器中的服务网关,其中认证参数至少包括登录类型、应用标识和应用安全凭证。
登录类型具体包括标识登录级别及登录方式,本申请中支持的登录级别为租户登录、租户创建的项目用户登录(简记为项目用户登录);申请中支持的登录方式为账号密码登录、手机验证码登录。
其中,租户登录的账号密码登录方式下,需携带登录类型、租户名、租户密码登录参数。租户登录的手机验证码登录方式下,需携带登录类型、租户手机号、手机号获取的验证码登录参数。项目用户登录的账号密码登录方式下,需携带登录类型、用户名、用户密码登录参数。项目用户登录的手机验证码登录方式下,需携带登录类型、用户手机号、手机号获取的验证码登录参数。
应用标识表示客户端应用标识,由授权服务器在客户端应用提交时颁发给客户端应用。
应用安全凭证表示客户端应用和服务器之间的安全凭证,由服务器在客户端应用提交时颁发给客户端应用。
在一实施例中,步骤S101包括:
获取所述初次登录指令相应的登录类型、应用标识和应用安全凭证;
将所述应用标识和应用安全凭证进行加密得到加密字符串,由所述登录类型和所述加密字符串组成认证参数。
在本实施例中,具体是先获取应用标识和应用安全凭证,然后将所述应用标识与应用安全凭证进行加密得到加密字符串,由所述登录类型和所述加密字符串组成认证参数。通过这一方式,可以快速得到安全性较高的认证参数。
具体的,将所述应用标识和应用安全凭证进行base64方式加密得到加密字符串,将加密字符串作为认证请求链接头部的用户凭证参数值;同时携带参数登录类型、用户名、密码,其中登录类型的值为tenant Password(即租户密码)。
S102、对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证。
在本实施例中,统一鉴权模块中的拦截器拦截客户端初次认证的登录请求,所述拦截器捕获认证请求链接,判断认证请求链接头部是否带有认证参数的用户凭证参数,如认证请求链接头部有用户凭证参数则将认证请求链接分发至服务器中的授权服务器,如认证请求链接头部无用户凭证参数则返回认证失败提示。
在一实施例中,步骤S102之前还包括:
获取认所述认证请求链接头部的认证参数。
在本实施例中,由于认证请求链接是由客户端向服务器中的服务网关发送请求获取Token的http链接,链接头部需携带用户凭证参数。故在服务器中对认证请求链接进行验证之前,还需获取认所述认证请求链接头部的认证参数。
S103、若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
在本实施例中,服务器中的授权服务器接收并验证鉴权模块分发的授权凭证,验证通过后,将Token令牌返回应用客户端并存储至Redis数据库。
在一实施例中,步骤S103包括:
获取所述认证参数相应的鉴权参数,将所述鉴权参数发送至令牌端点;
若所述鉴权参数在所述令牌端点中通过验证,生成令牌;
将所述令牌发送至客户端,并将所述令牌进行缓存。
在本实施例中,验证过程如下:授权服务器根据应用标识及应用安全凭证进行客户端认证,客户端认证通过后,授权服务器将对应的认证参数发送至颁发Token端点,所述颁发Token端点通过用户微服务模块对所述认证参数进行身份验证,检验通过后授权服务器将本次登录的Token令牌返回客户端同时写入缓存Redis数据库。
应用客户端获取到Token后,应用客户端如果需要访问后端业务服务(简称后端服务),则需要进入鉴权流程。
在一实施例中,步骤S103之后还包括:
将所述令牌存入所述认证参数,更新所述认证参数;
若确定检测到访问请求,获取所述访问请求相应的请求参数;
若确定所述请求参数中包括所述令牌,解析获取所述令牌相应的用户信息及权限信息,若确定所述权限信息通过登录验证,将所述用户信息及权限信息增加至所述访问请求更新所述访问请求,将所述访问请求发送至微服务;
通过所述微服务获取所述访问请求中的用户信息及权限信息,并在微服务中进行用户信息和权限信息的共享。
在本实施例中,应用客户端如果需要访问后端业务服务(简称后端服务),则需要进入如上的鉴权流程:
(1)应用客户端将获取到的Token写入访问请求头部的用户凭证参数,然后发起访问后端服务请求;
(2)统一鉴权模块中的拦截器拦截访问请求,获取判断所述访问请求是否携带Token参数,如果携带Token参数则使用Token解析类解析出Token所对应的用户信息及权限信息;然后验证Token中的权限信息是否能访问当前请求,验证通过后将用户名和权限信息存储到访问请求的头部信息中,传递至服务网关模块管理的微服务;其中Token解析类用于解析Token参数,通过Redis缓存查询Token对应的用户信息及权限信息;
(3)服务网关模块通过Token解析类获取统一鉴权模块传递的用户信息及权限信息,后端用户微服务模块中的其他微服务模块则通过各自模块的Token解析类获取用户信息及权限信息,实现用户信息及权限信息的共享。
在一实施例中,所述若确定所述请求参数中包括所述令牌,解析获取所述令牌相应的用户信息及权限信息,包括:
从缓存中获取预先存储的令牌,并获取所述请求参数中包括的当前令牌,若所述当前令牌与所述令牌相同,则确定所述请求参数中包括所述令牌;
若确定所述请求参数中包括所述令牌,且确定所述令牌中的权限信息合法,则确定所述权限信息通过验证。
在本实施例中,在鉴权过程中,是从Redis数据库的缓存中获取预先存储的令牌,并获取所述请求参数中包括的当前令牌,将两者进行比较判断是否相同,从而确定所述权限信息是否通过验证。
在一实施例中,所述在微服务中进行用户信息和权限信息的共享,包括:
获取所述微服务中包括微服务集合,将所述用户信息和权限信息对所述微服务集合中进行数据共享。
在本实施例中,用户微服务模块中包括多个微服务组成微服务集合,当其中一个微服务获取了用户信息和权限信息后,可以将所述用户信息和权限信息对所述微服务集合中所有的微服务进行数据共享。
可见,实施本申请的技术方案,具有以下优点:
1、本申请支持SaaS多租户架构下的微服务认证、鉴权,同时实现用户体系的统一管理,用户权限的统一管理,还提供租户分配、租户下用户的隔离模式,提供基于RBAC的角色-权限控制、提供账号密码、手机验证码等多种获取Token令牌的认证、鉴权接口。
2、本申请通过构造统一认证及统一鉴权模块,集成并封装角色、权限管理功能,从而实现对外统一的用户认证中心,该用户认证中心的特点是面向多层级的用户管理,多维度的认证类型。
3、本申请使用Token令牌,用户客户端与服务网关只需建立一次连接即可,在统一鉴权模块完成校验,后续客户端访问微服务时,通过本申请构造的特有的Token解析类获取登录用户信息,无需向服务网关发起获取用户信息的请求,从而减轻服务器的压力,同时利用redis存储数据的特性,可以有效管理颁发的Token令牌,包括令牌的过期时间、刷新时间等,保证应用客户端认证、鉴权安全可控。
4、本申请基于微服务架构实现,通过服务网关对所有的客户端请求进行统一的收口及过滤,并将各个微服务聚合,对微服务资源进行统一的管理,有效消除后台微服务之间的耦合。
该方法实现了将多服务、多层级的鉴权进行整合,实现支持多客户端模式、微服务模式的认证体系,为物联网应用厂商提供可扩展标准化的鉴权方式。
本发明实施例还提供一种SaaS多租户架构的微服务鉴权装置,该SaaS多租户架构的微服务鉴权装置用于执行前述SaaS多租户架构的微服务鉴权方法的任一实施例。具体地,请参阅图3,图3是本发明实施例提供的SaaS多租户架构的微服务鉴权装置100的示意性框图。
其中,如图3所示,SaaS多租户架构的微服务鉴权装置100包括初次登录单元101、第一拦截单元102、令牌获取单元103。
初次登录单元101,用于响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录。
在本实施例中,是以服务器为执行主体来描述技术方案。在服务器架构中,包括服务网关、统一认证模块、Redis数据库、用户微服务模块,具体为:
服务网关,用于为前台提供后台微服务的聚合,对用户微服务模块资源进行统一管理,提供一个统一的服务出口,有效消除后台微服务之间的耦合。服务网关包含统一鉴权模块,所述统一鉴权模块构建访问拦截器,负责所有请求的鉴权以及校验应用客户端Token(令牌,下同)令牌的合法性。服务网关对微服务资源进行统一管理,提供一个统一的服务出口,有效消除后台微服务之间的耦合:即将用户管理、统一鉴权、统一认证、日志管理等公共服务模块单独抽离,构建公用的微服务模块,引入Nacos注册中心(Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台),所构建的公用微服务模块在Nacos进行注册,供服务网关进行统一管理及分配,后端的用户微服务模块只需要访问服务网关,即实现登录认证、鉴权等功能,有效地消除后台微服务之间的耦合。
统一认证模块构建基于OAuth2标准(Open Authorization,即安全的、开放而又简易的标准,下同)认证授权协议的授权服务器,负责登录认证、Token派发、Token刷新、应用接入管理等功能,并拓展多级别登录、多类型鉴权方式,多级别登录包括租户级别登录、租户创建的项目用户级别登录,多类型鉴权方式包括账号密码登录鉴权、手机验证码登录鉴权以及Token鉴权。
Redis数据库是基于Redis(远程字典服务,下同)缓存技术,用于存储统一认证模块返回的Token,验证每次请求携带的Token数据。
用户微服务模块用于创建租户及租户对应的项目用户(又称用户)、用户角色、用户权限,所述项目用户与所述项目对应;同时对租户信息、用户信息进行加密,提供授权服务器身份校验时的用户信息。租户信息由用户在系统中注册生成,而项目用户则由租户自行创建。
用户初次登陆服务器的认证过程时客户端先携带认证参数访问服务器中的服务网关,其中认证参数至少包括登录类型、应用标识和应用安全凭证。
登录类型具体包括标识登录级别及登录方式,本申请中支持的登录级别为租户登录、租户创建的项目用户登录(简记为项目用户登录);申请中支持的登录方式为账号密码登录、手机验证码登录。
其中,租户登录的账号密码登录方式下,需携带登录类型、租户名、租户密码登录参数。租户登录的手机验证码登录方式下,需携带登录类型、租户手机号、手机号获取的验证码登录参数。项目用户登录的账号密码登录方式下,需携带登录类型、用户名、用户密码登录参数。项目用户登录的手机验证码登录方式下,需携带登录类型、用户手机号、手机号获取的验证码登录参数。
应用标识表示客户端应用标识,由授权服务器在客户端应用提交时颁发给客户端应用。
应用安全凭证表示客户端应用和服务器之间的安全凭证,由服务器在客户端应用提交时颁发给客户端应用。
在一实施例中,初次登录单元101包括:
初始登录信息获取单元,用于获取所述初次登录指令相应的登录类型、应用标识和应用安全凭证;
认证参数组合单元,用于将所述应用标识和应用安全凭证进行加密得到加密字符串,由所述登录类型和所述加密字符串组成认证参数。
在本实施例中,具体是先获取应用标识和应用安全凭证,然后将所述应用标识与应用安全凭证进行加密得到加密字符串,由所述登录类型和所述加密字符串组成认证参数。通过这一方式,可以快速得到安全性较高的认证参数。
具体的,将所述应用标识和应用安全凭证进行base64方式加密得到加密字符串,将加密字符串作为认证请求链接头部的用户凭证参数值;同时携带参数登录类型、用户名、密码,其中登录类型的值为tenant Password(即租户密码)。
第一拦截单元102,用于对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证。
在本实施例中,统一鉴权模块中的拦截器拦截客户端初次认证的登录请求,所述拦截器捕获认证请求链接,判断认证请求链接头部是否带有认证参数的用户凭证参数,如认证请求链接头部有用户凭证参数则将认证请求链接分发至服务器中的授权服务器,如认证请求链接头部无用户凭证参数则返回认证失败提示。
在一实施例中,SaaS多租户架构的微服务鉴权装置100还包括:
认证参数获取单元,用于获取认所述认证请求链接头部的认证参数。
在本实施例中,由于认证请求链接是由客户端向服务器中的服务网关发送请求获取Token的http链接,链接头部需携带用户凭证参数。故在服务器中对认证请求链接进行验证之前,还需获取认所述认证请求链接头部的认证参数。
令牌获取单元103,用于若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
在本实施例中,服务器中的授权服务器接收并验证鉴权模块分发的授权凭证,验证通过后,将Token令牌返回应用客户端并存储至Redis数据库。
在一实施例中,令牌获取单元103包括:
鉴权参数获取单元,用于获取所述认证参数相应的鉴权参数,将所述鉴权参数发送至令牌端点;
令牌生成单元,用于若所述鉴权参数在所述令牌端点中通过验证,生成令牌;
令牌缓存单元,用于将所述令牌发送至客户端,并将所述令牌进行缓存。
在本实施例中,验证过程如下:授权服务器根据应用标识及应用安全凭证进行客户端认证,客户端认证通过后,授权服务器将对应的认证参数发送至颁发Token端点,所述颁发Token端点通过用户微服务模块对所述认证参数进行身份验证,检验通过后授权服务器将本次登录的Token令牌返回客户端同时写入缓存Redis数据库。
应用客户端获取到Token后,应用客户端如果需要访问后端业务服务(简称后端服务),则需要进入鉴权流程。
在一实施例中,SaaS多租户架构的微服务鉴权装置100还包括:
认证参数更新单元,用于将所述令牌存入所述认证参数,更新所述认证参数;
请求参数获取单元,用于若确定检测到访问请求,获取所述访问请求相应的请求参数;
访问请求发送单元,用于若确定所述请求参数中包括所述令牌,解析获取所述令牌相应的用户信息及权限信息,若确定所述权限信息通过登录验证,将所述用户信息及权限信息增加至所述访问请求更新所述访问请求,将所述访问请求发送至微服务;
信息共享单元,用于通过所述微服务获取所述访问请求中的用户信息及权限信息,并在微服务中进行用户信息和权限信息的共享。
在本实施例中,应用客户端如果需要访问后端业务服务(简称后端服务),则需要进入如上的鉴权流程:
(1)应用客户端将获取到的Token写入访问请求头部的用户凭证参数,然后发起访问后端服务请求;
(2)统一鉴权模块中的拦截器拦截访问请求,获取判断所述访问请求是否携带Token参数,如果携带Token参数则使用Token解析类解析出Token所对应的用户信息及权限信息;然后验证Token中的权限信息是否能访问当前请求,验证通过后将用户名和权限信息存储到访问请求的头部信息中,传递至服务网关模块管理的微服务;其中Token解析类用于解析Token参数,通过Redis缓存查询Token对应的用户信息及权限信息;
(3)服务网关模块通过Token解析类获取统一鉴权模块传递的用户信息及权限信息,后端用户微服务模块中的其他微服务模块则通过各自模块的Token解析类获取用户信息及权限信息,实现用户信息及权限信息的共享。
在一实施例中,访问请求发送单元,包括:
令牌比对单元,用于从缓存中获取预先存储的令牌,并获取所述请求参数中包括的当前令牌,若所述当前令牌与所述令牌相同,则确定所述请求参数中包括所述令牌;
权限验证单元,用于若确定所述请求参数中包括所述令牌,且确定所述令牌中的权限信息合法,则确定所述权限信息通过验证。
在本实施例中,在鉴权过程中,是从Redis数据库的缓存中获取预先存储的令牌,并获取所述请求参数中包括的当前令牌,将两者进行比较判断是否相同,从而确定所述权限信息是否通过验证。
在一实施例中,所述信息共享单元还用于:
获取所述微服务中包括微服务集合,将所述用户信息和权限信息对所述微服务集合中进行数据共享。
在本实施例中,用户微服务模块中包括多个微服务组成微服务集合,当其中一个微服务获取了用户信息和权限信息后,可以将所述用户信息和权限信息对所述微服务集合中所有的微服务进行数据共享。
该装置实现了将多服务、多层级的鉴权进行整合,实现支持多客户端模式、微服务模式的认证体系,为物联网应用厂商提供可扩展标准化的鉴权方式。
上述SaaS多租户架构的微服务鉴权装置可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,也可以是服务器集群。
参阅图4,该计算机设备500包括通过装置总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作装置5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行SaaS多租户架构的微服务鉴权方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行SaaS多租户架构的微服务鉴权方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的SaaS多租户架构的微服务鉴权方法。
本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,也可以为易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的SaaS多租户架构的微服务鉴权方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,后台服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种SaaS多租户架构的微服务鉴权方法,其特征在于,包括:
响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录;
对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;以及
若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
2.根据权利要求1所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端之后,还包括:
将所述令牌存入所述认证参数,更新所述认证参数;
若确定检测到访问请求,获取所述访问请求相应的请求参数;
若确定所述请求参数中包括所述令牌,解析获取所述令牌相应的用户信息及权限信息,若确定所述权限信息通过登录验证,将所述用户信息及权限信息增加至所述访问请求更新所述访问请求,将所述访问请求发送至微服务;
通过所述微服务获取所述访问请求中的用户信息及权限信息,并在微服务中进行用户信息和权限信息的共享。
3.根据权利要求1所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述获取所述初次登录指令相应的认证参数,包括:
获取所述初次登录指令相应的登录类型、应用标识和应用安全凭证;
将所述应用标识和应用安全凭证进行加密得到加密字符串,由所述登录类型和所述加密字符串组成认证参数。
4.根据权利要求1所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接之后,所述对所述认证请求链接是否包含认证参数进行验证之前,还包括:
获取认所述认证请求链接头部的认证参数。
5.根据权利要求1所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述根据所述认证参数获取令牌,将所述令牌发送至客户端,包括:
获取所述认证参数相应的鉴权参数,将所述鉴权参数发送至令牌端点;
若所述鉴权参数在所述令牌端点中通过验证,生成令牌;
将所述令牌发送至客户端,并将所述令牌进行缓存。
6.根据权利要求2所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述若确定所述请求参数中包括所述令牌,解析获取所述令牌相应的用户信息及权限信息,包括:
从缓存中获取预先存储的令牌,并获取所述请求参数中包括的当前令牌,若所述当前令牌与所述令牌相同,则确定所述请求参数中包括所述令牌;
若确定所述请求参数中包括所述令牌,且确定所述令牌中的权限信息合法,则确定所述权限信息通过验证。
7.根据权利要求2所述的SaaS多租户架构的微服务鉴权方法,其特征在于,所述在微服务中进行用户信息和权限信息的共享,包括:
获取所述微服务中包括微服务集合,将所述用户信息和权限信息对所述微服务集合中进行数据共享。
8.一种SaaS多租户架构的微服务鉴权装置,其特征在于,包括:
初次登录单元,用于响应于客户端的初次登录指令,获取所述初次登录指令相应的认证参数;其中,所述认证参数至少包括登录类型、应用标识和应用安全凭证;所述登录类型包括租户登录和项目用户登录;
第一拦截单元,用于对所述初次登录指令相应的登录请求进行拦截,获取所述登录请求相应的认证请求链接,对所述认证请求链接是否包含认证参数进行验证;以及
令牌获取单元,用于若确定所述认证请求链接通过验证,根据所述认证参数获取令牌,将所述令牌发送至客户端。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的SaaS多租户架构的微服务鉴权方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的SaaS多租户架构的微服务鉴权方法。
CN202111175521.7A 2021-10-09 2021-10-09 SaaS多租户架构的微服务鉴权方法、装置、及设备 Active CN113923020B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111175521.7A CN113923020B (zh) 2021-10-09 2021-10-09 SaaS多租户架构的微服务鉴权方法、装置、及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111175521.7A CN113923020B (zh) 2021-10-09 2021-10-09 SaaS多租户架构的微服务鉴权方法、装置、及设备

Publications (2)

Publication Number Publication Date
CN113923020A true CN113923020A (zh) 2022-01-11
CN113923020B CN113923020B (zh) 2024-05-17

Family

ID=79238599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111175521.7A Active CN113923020B (zh) 2021-10-09 2021-10-09 SaaS多租户架构的微服务鉴权方法、装置、及设备

Country Status (1)

Country Link
CN (1) CN113923020B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039909A (zh) * 2020-09-03 2020-12-04 平安科技(深圳)有限公司 基于统一网关的认证鉴权方法、装置、设备及存储介质
CN114928460A (zh) * 2022-02-14 2022-08-19 上海大学 一种基于微服务架构的多租户应用集成框架系统
CN115085944A (zh) * 2022-08-22 2022-09-20 四川蜀天信息技术有限公司 一种多空间场景RESTful API统一用户鉴权管理方法和系统
CN115102782A (zh) * 2022-07-19 2022-09-23 平安科技(深圳)有限公司 客户端的认证方法及装置、存储介质、计算机设备
CN115277263A (zh) * 2022-09-28 2022-11-01 天津卓朗昆仑云软件技术有限公司 权限认证的数据处理系统、方法以及装置
CN115695001A (zh) * 2022-10-31 2023-02-03 中国平安财产保险股份有限公司 微服务间的安全认证方法及其相关设备
CN116743702A (zh) * 2023-08-16 2023-09-12 湖南映客互娱网络信息有限公司 一种SaaS系统的统一域名访问方法、装置及设备
CN117375901A (zh) * 2023-09-30 2024-01-09 上海复通软件技术有限公司 一种跨租户多终端鉴权方法及系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017196774A1 (en) * 2016-05-11 2017-11-16 Oracle International Corporation Multi-tenant identity and data security management cloud service
US20180075231A1 (en) * 2016-09-14 2018-03-15 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US20180077138A1 (en) * 2016-09-14 2018-03-15 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
CN109327477A (zh) * 2018-12-06 2019-02-12 泰康保险集团股份有限公司 认证鉴权方法、装置及存储介质
CN110086822A (zh) * 2019-05-07 2019-08-02 北京智芯微电子科技有限公司 面向微服务架构的统一身份认证策略的实现方法及系统
US20190394204A1 (en) * 2018-06-25 2019-12-26 Oracle International Corporation Declarative Third Party Identity Provider Integration for a Multi-Tenant Identity Cloud Service
CN111586030A (zh) * 2020-04-30 2020-08-25 武汉时波网络技术有限公司 一种基于微服务多租户的接口鉴权、权限验证方法及系统
US20200382488A1 (en) * 2019-06-03 2020-12-03 Zuora, Inc. Systems and methods for providing authentication in a microservice system
CN112039909A (zh) * 2020-09-03 2020-12-04 平安科技(深圳)有限公司 基于统一网关的认证鉴权方法、装置、设备及存储介质
CN112564916A (zh) * 2020-12-01 2021-03-26 上海艾融软件股份有限公司 应用于微服务架构的访问客户端认证系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017196774A1 (en) * 2016-05-11 2017-11-16 Oracle International Corporation Multi-tenant identity and data security management cloud service
US20180075231A1 (en) * 2016-09-14 2018-03-15 Oracle International Corporation Single sign-on functionality for a multi-tenant identity and data security management cloud service
US20180077138A1 (en) * 2016-09-14 2018-03-15 Oracle International Corporation Generating derived credentials for a multi-tenant identity cloud service
US20190394204A1 (en) * 2018-06-25 2019-12-26 Oracle International Corporation Declarative Third Party Identity Provider Integration for a Multi-Tenant Identity Cloud Service
CN109327477A (zh) * 2018-12-06 2019-02-12 泰康保险集团股份有限公司 认证鉴权方法、装置及存储介质
CN110086822A (zh) * 2019-05-07 2019-08-02 北京智芯微电子科技有限公司 面向微服务架构的统一身份认证策略的实现方法及系统
US20200382488A1 (en) * 2019-06-03 2020-12-03 Zuora, Inc. Systems and methods for providing authentication in a microservice system
CN111586030A (zh) * 2020-04-30 2020-08-25 武汉时波网络技术有限公司 一种基于微服务多租户的接口鉴权、权限验证方法及系统
CN112039909A (zh) * 2020-09-03 2020-12-04 平安科技(深圳)有限公司 基于统一网关的认证鉴权方法、装置、设备及存储介质
CN112564916A (zh) * 2020-12-01 2021-03-26 上海艾融软件股份有限公司 应用于微服务架构的访问客户端认证系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039909B (zh) * 2020-09-03 2022-07-12 平安科技(深圳)有限公司 基于统一网关的认证鉴权方法、装置、设备及存储介质
CN112039909A (zh) * 2020-09-03 2020-12-04 平安科技(深圳)有限公司 基于统一网关的认证鉴权方法、装置、设备及存储介质
CN114928460A (zh) * 2022-02-14 2022-08-19 上海大学 一种基于微服务架构的多租户应用集成框架系统
CN115102782B (zh) * 2022-07-19 2024-04-09 平安科技(深圳)有限公司 客户端的认证方法及装置、存储介质、计算机设备
CN115102782A (zh) * 2022-07-19 2022-09-23 平安科技(深圳)有限公司 客户端的认证方法及装置、存储介质、计算机设备
CN115085944A (zh) * 2022-08-22 2022-09-20 四川蜀天信息技术有限公司 一种多空间场景RESTful API统一用户鉴权管理方法和系统
CN115085944B (zh) * 2022-08-22 2022-11-01 四川蜀天信息技术有限公司 一种多空间场景RESTful API统一用户鉴权管理方法和系统
CN115277263A (zh) * 2022-09-28 2022-11-01 天津卓朗昆仑云软件技术有限公司 权限认证的数据处理系统、方法以及装置
CN115695001A (zh) * 2022-10-31 2023-02-03 中国平安财产保险股份有限公司 微服务间的安全认证方法及其相关设备
CN116743702A (zh) * 2023-08-16 2023-09-12 湖南映客互娱网络信息有限公司 一种SaaS系统的统一域名访问方法、装置及设备
CN116743702B (zh) * 2023-08-16 2024-02-27 湖南映客互娱网络信息有限公司 一种SaaS系统的统一域名访问方法、装置及设备
CN117375901A (zh) * 2023-09-30 2024-01-09 上海复通软件技术有限公司 一种跨租户多终端鉴权方法及系统
CN117375901B (zh) * 2023-09-30 2024-05-17 上海复通软件技术有限公司 一种跨租户多终端鉴权方法及系统

Also Published As

Publication number Publication date
CN113923020B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US11323441B2 (en) System and method for proxying federated authentication protocols
US11544356B2 (en) Systems and methods for dynamic flexible authentication in a cloud service
CN113923020A (zh) SaaS多租户架构的微服务鉴权方法、装置、及设备
US20180278603A1 (en) Control method for authentication/authorization server, resource server, and authentication/authorization system
CN105187362B (zh) 一种桌面云客户端和服务端之间连接认证的方法及装置
KR101611872B1 (ko) Fido와 인증서를 이용한 인증 방법
CN110365684B (zh) 应用集群的访问控制方法、装置和电子设备
WO2022247359A1 (zh) 集群访问方法、装置、电子设备和介质
CN111447220B (zh) 认证信息管理方法、应用系统的服务端及计算机存储介质
CN108616540B (zh) 一种基于跨平台加密算法与声明式过滤认证的平台认证方法及系统
KR101736157B1 (ko) 연합 인증 방법 및 장치
WO2022144024A1 (en) Attribute-based encryption keys as key material for key-hash message authentication code user authentication and authorization
CN112953711B (zh) 数据库安全连接系统及方法
CN112532609B (zh) 一种支持多种认证源接入的统一身份认证方法
AU2019370092B2 (en) Centralized authentication and authorization
KR20180034199A (ko) 싱글 사인 온 서비스 기반의 상호 인증 방법 및 시스템
KR20220121320A (ko) 사용자 및 디바이스 통합 인증 시스템 및 그 방법
KR20210068832A (ko) 웹 기반 sql 툴을 이용한 접근 제어 시스템 및 방법
WO2023160632A1 (zh) 针对飞地实例的云服务访问权限设置方法和云管理平台
CN114697137A (zh) 应用程序的登录方法、装置、设备及存储介质
CN118174874A (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
GR01 Patent grant
GR01 Patent grant