一种大数据服务单点登录方法、装置及存储介质

文档序号:72740 发布日期:2021-10-01 浏览:22次 >En<

阅读说明:本技术 一种大数据服务单点登录方法、装置及存储介质 (Big data service single sign-on method, device and storage medium ) 是由 李长青 于 2021-05-13 设计创作,主要内容包括:本公开提供一种大数据服务单点登录方法、装置及存储介质,用于解决通过浏览器访问大数据服务用户权限隔离及使用不便的技术问题。本公开提供的技术方案将单点登录认证和客户/服务器模式的用户认证方式结合起来,针对从浏览器来的请求,通过过滤器过滤出来进行特殊处理,将单点登录认证服务生成的令牌传递到客户/服务器模式的用户认证插件中,客户/服务器模式的用户认证插件从令牌中提取用户身份信息后,以提取的用户身份访问指定服务。通过本公开技术方案,能够实现采用浏览器单点登录的情况下用户权限的隔离,同时也能够避免在多集群访问的场景下配置文件频繁修改切换的问题。(The disclosure provides a big data service single sign-on method, a device and a storage medium, which are used for solving the technical problems of user permission isolation and inconvenient use when a browser accesses a big data service. The technical scheme provided by the disclosure combines the single-point login authentication and the user authentication mode of the client/server mode, filters out a request from a browser through a filter to perform special processing, transmits a token generated by the single-point login authentication service to the user authentication plug-in of the client/server mode, and accesses the specified service by the extracted user identity after the user authentication plug-in of the client/server mode extracts the user identity information from the token. By the technical scheme, the user permission can be isolated under the condition of single sign-on by adopting the browser, and the problem of frequent modification and switching of the configuration file under the scene of multi-cluster access can be avoided.)

一种大数据服务单点登录方法、装置及存储介质

技术领域

本公开涉及通信及大数据

技术领域

,尤其涉及一种大数据服务单点登录方法、装置及存储介质。

背景技术

随着大数据技术的发展和广泛应用,大数据平台安全管控变得越来越重要。平台安全管控主要包含认证和授权两方面,生产场景通常使用Kerberos实现用户身份认证。

Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户端/服务器模式的应用程序提供强大的认证服务。Kerberos可用来在非安全网络中,对个人通信以安全的手段进行身份认证,只有通过身份认证的用户才可以访问集群环境。为了防止非法用户访问集群,往往会启用Kerberos。但是对集群访问安全起到保护作用的同时也引发了用户操作的复杂性。

Solr是一个开源的、独立的企业级搜索服务,基于HTTP和Apache Lucene实现。Solr提供了一个方便用户进行查询分析的管理用户接口Admin UI,默认情况下,用户可通过浏览器访问Admin UI管理用户接口界面。当启用Kerberos后,Admin UI的访问也受到了保护,用户必须安装配置Kerberos客户端、配置指定浏览器,才可进行访问。

然而,Kerberos客户端安装配置复杂,Kerberos客户端需与用户操作系统兼容,不同操作系统需要安装不同版本的客户端,客户端需要配置krb5.ini、hosts等配置文件,同时因为部分浏览器不支持,需要使用并配置特定浏览器。当用户需要通过指定的浏览器访问多个集群的Admin UI界面时,因为各个集群的配置文件不同,所以需要频繁修改客户端配置文件,容易出错,给用户的使用造成困难。

发明内容

有鉴于此,本公开提供一种大数据服务单点登录方法、装置及存储介质,用于解决通过浏览器访问大数据服务用户权限隔离及使用不便的技术问题。

图1为本公开提供的一种大数据服务单点登录方法的步骤流程图,该方法应用于用户请求访问的大数据服务所在的服务器,所述服务器安装有过滤器插件和客户端/服务器模式的用户认证插件,该方法包括:

步骤101.过滤器插件对浏览器发送的访问大数据服务的请求进行过滤,判断浏览器发送的请求中是否携带了令牌;

步骤102.当请求中未携带令牌时,过滤器插件将请求重定向到单点登录认证页面进行认证,在认证通过后请求将被再次重定向到过滤器插件,通过认证的请求中携带令牌;

步骤103.当请求中携带令牌时,过滤器插件对请求中携带的令牌进行有效性验证,若验证为有效,则将请求发送给客户/服务器模式的用户认证插件;

步骤104.客户/服务器模式的用户认证插件从过滤器插件转发的请求中携带的令牌中提取用户身份信息,将从令牌中提取的用户作为访问大数据服务认证用户。

基于本公开实施例的一方面,进一步地,所述方法还包括:

读取预设的配置信息,所述配置信息中包括过滤器类信息,所述过滤器类信息用于指示过滤器插件的程序位置及类名,所述大数据服务通过过滤器类信息实例化过滤器插件;

所述配置信息中还包括过滤器重定向地址,所述过滤器重定向地址用于在请求中未携带令牌的情况下,将请求重定向到该配置项指定的单点登录认证页面进行单点登录认证。

基于本公开实施例的一方面,进一步地,所述配置信息中还包括单点登录认证公钥,所述单点登录认证公钥用于与单点登录认证服务进行交互以及对请求中携带的令牌进行有效性验证。

基于本公开实施例的一方面,进一步地,所述对请求中携带的令牌进行有效性验证的内容包括:

使用所述单点登录认证公钥解密所述令牌;

当解密所述令牌成功后,进行以下一项或多项有效性验证:

验证所述令牌的状态是否有效;

验证所述令牌的有效期是否过期。

基于本公开实施例的一方面,进一步地,

所述单点登录认证服务为Knox网关;

所述客户/服务器模式的用户认证插件为Kerberos;

所述令牌为JSON格式的WEB令牌。

图2为本公开一实施例提供的一种大数据服务单点登录装置结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。当多个硬件设备共同实施本公开的技术方案时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,可视为各执行主体之间具有相互协作关系,各执行主体之间具有相互指挥和控制关系。

该装置200应用于用户请求访问的大数据服务所在的服务器,所述服务器安装有过滤器插件210和客户端/服务器模式的用户认证插件220:

所述过滤器插件210包括:

过滤模块211,用于对浏览器发送的访问大数据服务的请求进行过滤,判断浏览器发送的请求中是否携带了令牌;

重定向模块212,用于当请求中未携带令牌时,将请求重定向到单点登录认证页面进行认证;所述请求在认证通过后被再次重定向到所述过滤器插件210,通过认证的请求中携带令牌;

有效性验证模块213,用于当请求中携带令牌时,对请求中携带的令牌进行有效性验证,若验证为有效,则将请求发送给客户/服务器模式的用户认证插件220;

客户/服务器模式的用户认证插件220用于从过滤器插件210转发的请求中携带的令牌中提取用户身份信息,将从令牌中提取的用户作为访问大数据服务认证用户。

进一步地,所述装置200还包括配置读取模块,该模块用于读取预设的配置信息,所述配置信息中包括过滤器类信息,所述过滤器类信息用于指示过滤器插件的程序位置及类名,所述大数据服务通过过滤器类信息实例化过滤器插件;

所述配置信息中还包括过滤器重定向地址,所述过滤器重定向地址用于在请求中未携带令牌的情况下,将请求重定向到该配置项指定的单点登录认证页面进行单点登录认证;

所述配置信息中还包括单点登录认证公钥,所述单点登录认证公钥用于与单点登录认证服务进行交互以及对请求中携带的令牌进行有效性验证。

进一步地,有效性验证模块213对请求中携带的令牌进行有效性验证的内容包括:

使用所述单点登录认证公钥解密所述令牌;

当解密所述令牌成功后,进行以下一项或多项有效性验证:

验证所述令牌的状态是否有效;

验证所述令牌的有效期是否过期。

本公开提供的技术方案,将单点登录认证和客户/服务器模式的用户认证方式结合起来,针对从浏览器来的请求,通过过滤器过滤出来进行特殊处理,将单点登录认证服务生成的令牌传递到客户/服务器模式的用户认证插件中,客户/服务器模式的用户认证插件从令牌中提取用户身份信息后,以提取的用户身份访问指定服务。通过本公开技术方案,能够实现采用浏览器单点登录的情况下用户权限的隔离,同时也能够避免在多集群访问的场景下配置文件频繁修改切换的问题。

附图说明

为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。

图1为本公开提供的一种大数据服务单点登录方法的步骤流程图;

图2为本公开提供的一种大数据服务单点登录装置结构示意图;

图3为本公开一实施例提供的一种大数据服务单点登录方法的步骤流程图;

图4为本公开一实施例提供的一种电子设备结构示意图。

具体实施方式

在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

用户使用浏览器基于Kerberos协议访问大数据服务(例如Solr)集群时,需要对Kerberos客户端进行配置。不同的大数据服务对不同的浏览器的支持度和兼容性可能不同,有些大数据服务可能对浏览器还有特定的要求,用户需要选择安装不同的浏览器。另外,如果用户需要访问多个大数据服务集群,由于集群配置不同,因此用户需要频繁的修改配置文件,容易造成混淆,给用户使用带来不便。

如果将单点登录服务(例如Knox)与大数据服务一起部署,采用单点登录服务实现大数据服务的单点登录认证,将为用户提供很大的方便,然而,目前单点登录认证方式,在用户通过单点登录服务的认证之后,单点登录服务会使用其默认设置的用户去访问和操作大数据服务,这样会造成单点认证的用户和实际操作大数据服务的用户不一致。例如使用user1用户进行了单点登录认证,认证成功后跳转到Solr的管理用户接口界面后,实际操作用户为knox的用户而不是user1,认证用户和实际操作用户不一致,使得无法进行灵活的用户切换,用户权限隔离无法实现。

为解决上述技术问题,本公开提供一种大数据服务单点登录方法,本公开的基本思路是,将单点登录服务和类似Kerberos协议的认证方式融合在一起,用户通过浏览器访问大数据服务组件时,由新增的过滤器插件(简称过滤器)将请求重定向到单点登录服务,通过单点登录服务获取用户身份认证令牌Token,在获取到Token后将携带Token的请求重定向到大数据服务的客户端/服务器模式的认证插件,由大数据服务的认证插件从Token中提取用户信息,以实际的用户账户访问大数据服务组件。通过本公开技术方案解决了直接使用单点登录认证时,最终操作用户不是认证用户造成的逻辑错乱以及无法切换用户导致用户权限隔离无法实现的技术问题,同时无需改变用户访问大数据服务组件的使用习惯,给用户提供了良好的操作体验。

图3为本公开一实施例提供的一种大数据服务单点登录方法的步骤流程图,该实施例中,大数据服务为Solr,单点登录服务为Knox,大数据服务所使用的客户端/服务器模式的用户认证插件为Kerberos插件,本公开实施例中使用这几种组件或插件作为示例对本公开提供的技术方案进行详细描述,本领域一般技术人员可将相同的思路应用到类似的服务附件或插件中,并不构成对发明保护范围的限制。

Apache Knox网关是一个应用程序网关,可用于与Apache Hadoop部署的表述性状态传递应用程序接口(Representational State Transfer API,REST API)和用户接口(User Interface,UI)进行交互,Knox网关为与Hadoop集群的所有REST和HTTP交互提供了一个访问点。Knox可提供HTTP代理服务(Proxying Services)、认证服务(AuthenticationServices)、客户端服务(Client DSK/SDK Services),Knox的认证服务可提供基于令牌Token的单点登录(Single Sign ON,SSO)服务能力。

Solr是一个企业级搜索服务,Solr为Solr管理员和开发者提供了一个Web管理入口即管理用户接口Admin UI,用户可通过浏览器访问Admin UI。

Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户/服务器模式的应用程序提供强大的认证服务。作为一种可信任的第三方认证服务,Kerberos协议的安全主要依赖于参加者对时间的松散同步和短周期的票据(Ticket)认证声明。用户先用共享密钥从某认证服务器得到一个身份证明即票据,随后用户使用这个票据与服务端进行通信,而不使用共享密钥。

在执行图3的方法步骤之前,需要首先在Solr服务端安装过滤器插件,过滤器插件用于拦截针对Solr Admin UI的访问请求,从请求中过滤出Web类型的访问请求,针对过滤出的Web类型的请求进行如图3所示的特殊处理,为实现所述特殊处理过程,还需要为Solr配置文件web.xml增加必要的配置,为过滤器插件配置如下参数:

1)过滤器类信息,用于指示过滤器插件的程序位置及类名,Solr服务端通过过滤器类信息在服务端实例化过滤器插件;

2)过滤器地址映射,用于根据访问Solr的请求的URL(Uniform ResourceLocator,统一资源定位符)将请求映射到不同的过滤器插件进行处理,可实现不同的过滤器处理不同类型的访问Solr的请求的目的。

3)过滤器重定向地址,用于在请求中未携带令牌的情况下,将请求重定向到该配置项指定的单点登录认证的地址进行Knox认证,即认证网页的认证地址;

4)单点登录认证公钥,用于在进行单点登录认证时与单点登录认证服务进行交互以及对请求中携带的令牌进行有效性验证。

配置文件修改完成后,将实现过滤器插件的程序包(例如jar包、动态链接库等)及其依赖放至Solr服务lib目录,之后启动Solr服务,在Solr服务重启后,Solr服务会自动加载过滤器插件并读取相应的配置。

以下结合图3详细描述本公开提供的大数据服务单点登录方法的步骤流程,该方法应用于用户请求访问的服务器,该服务器安装有过滤器插件和客户端/服务器模式的用户认证插件,包括:

步骤310.过滤器插件接收客户端发送的请求;

客户端访问Solr Admin UI的访问请求可以是通过WEB浏览器(简称浏览器)发送的,也可以是通过非浏览器终端发送的,例如通过Java Client、CURL指令等方式发送。本公开提供的过滤器插件用于拦截客户端通过浏览器发送的访问请求,对浏览器的访问请求做特殊的处理。

在本公开另一实施例中,该步骤还包括基于过滤器地址映射配置参数对接收到的访问Solr的请求进行过滤,对该配置指定的位置或类型的访问请求进行后续的处理,例如通过设置“/*”来对所有访问Solr的请求进行过滤以执行后续的处理步骤。

步骤320.过滤器插件判断请求是否是由浏览器发送的,若判定为是,执行步骤321,否则执行步骤330;

步骤321.过滤器插件判断请求中是否携带了令牌,如果未携带令牌,则执行步骤322,如果携带了令牌,则执行步骤323;

该实施例中采用JSON格式的WEB令牌(JSON WEB TOKEN,JWT)作为是否通过单点登录认证的凭据,若未携带令牌则根据过滤器重定向地址参数将请求重定向到单点登录认证页面,用户通过单点登录认证页面认证通过后,单点登录认证服务(例如Knox)会为用户生成JWT令牌,令牌中包含有用户账号、令牌有效期等信息。

该实施例中,JWT令牌携带在HTTP请求的Cookie中,过滤器通过读取HTTP请求的Cookie中的“hadoop-jwt”名称的属性来获取JWT令牌,如果cookie中不存在hadoop-jwt,则判定请求中未携带令牌。

步骤322.过滤器插件将请求重定向到单点登录认证页面进行认证,在认证通过后请求将被再次重定向到过滤器,执行步骤320;

在请求未携带令牌的情况下,请求会被重定向至单点登录用户认证页面,用户在该页面输入用户名和密码进行Knox身份认证,认证通过则会在请求的HTTP请求体的cookie中生成令牌,例如名称为“hadoop-jwt”的令牌,在认证通过并生成令牌后,请求会被再次重定向至最初的访问地址,再次进入过滤器,由过滤器插件进行处理。

步骤323.过滤器插件对请求中携带的令牌进行有效性验证,若验证为有效,则将请求发送给客户/服务器模式的用户认证插件,执行步骤324,否则执行步骤322;

该步骤中,过滤器插件基于预先配置的配置文件中的单点登录认证公钥对请求携带的令牌进行解密,根据令牌的状态、令牌的有效时间、受众等信息对令牌进行有效性验证,如果有效则将请求转发给客户/服务器模式的用户认证插件(例如Kerberos认证插件);如果无效则将请求重定向到单点登录认证页面进行认证。

本公开所述的客户/服务器模式的用户认证插件是指类似于Kerberos协议的认证插件,此类认证插件所采用的认证过程可以是:用户先用共享密钥从某认证服务器得到一个身份证明,然后用户使用这个身份证明与所要访问的服务进行通信,而不使用共享密钥。

步骤324.客户/服务器模式的用户认证插件接收到请求后,判断请求中是否携带令牌,如果携带了令牌,则执行步骤325,否则执行步骤330;

该步骤中,客户/服务器模式的用户认证插件对接收到的请求进行统一处理,首先判断请求中是否携带令牌,如果携带令牌,说明该请求是通过过滤器转发过来的,是已经经过单点登录认证后的请求,对该类请求直接从令牌中提取用户身份信息即可。如果请求中未携带令牌,则说明该请求是未通过过滤器过滤直接发送给客户/服务器模式的用户认证插件的。对于未通过过滤器处理的请求或通过过滤器处理但非浏览器发送的请求,本公开直接使用原生的客户/服务器模式的用户认证插件对请求进行认证。

步骤325.客户/服务器模式的用户认证插件从令牌中提取用户身份信息,以提取的用户身份访问大数据服务。

该步骤中,由于令牌中本身就携带了用户身份信息,因此客户/服务器模式的用户认证插件直接从令牌中提取用户身份信息,并使用从令牌中提取的用户身份信息访问大数据服务。

例如kerberos作为客户/服务器模式的用户认证插件,判断请求中的cookie中是否存在hadoop-jwt令牌,若存在则直接略过原生kerberos认证流程中的认证步骤,默认认证通过,然后从令牌中提取用户账号,使用提取的用户账号访问Solr Admin UI,这样Solr就可以区分出是哪个用户进行的访问,并针对不同用户进行相应的权限控制,从而避免了单纯采用单点登录认证方式下,使用Knox账号访问Solr导致无法区分用户的情况发生。

步骤330.客户/服务器模式的用户认证插件对未通过过滤器处理的请求或通过过滤器处理但非浏览器发送的请求,直接使用原生的客户/服务器模式的用户认证插件对请求进行认证。

本公开兼容未使用浏览器使用其它方式例如Java Client、CURL指令等方式发送的请求的处理,将此类请求通过过滤器直接导向到kerberos用户认证插件,由原生的kerberos认证流程对用户进行认证。

本公开提供的技术方案,将单点登录认证和客户/服务器模式的用户认证方式结合起来,针对从浏览器来的请求,通过过滤器过滤出来进行特殊处理,将单点登录认证服务生成的令牌传递到客户/服务器模式的用户认证插件中,客户/服务器模式的用户认证插件从令牌中提取用户身份信息后,以提取的用户身份访问指定服务。通过本公开技术方案,能够实现采用浏览器单点登录的情况下用户权限的隔离,同时也能够避免在多集群访问的场景下配置文件频繁修改切换的问题。

图4为本公开一实施例提供的一种电子设备结构示意图,该设备400包括:诸如中央处理单元(CPU)的处理器410、通信总线420、通信接口440以及存储介质430。其中,处理器410与存储介质430可以通过通信总线420相互通信。存储介质430内存储有计算机程序,当该计算机程序被处理器410执行时即可实现本公开提供的方法的各步骤的功能。

其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。

以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种内外网数据传输的方法、装置、设备及可读介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类