...进程中同时支持多个Kerberos认证的方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利
(10)授权公告号 (45)授权公告日 (21)申请号 202011518079.9
(22)申请日 2020.12.21
(65)同一申请的已公布的文献号
申请公布号 CN  112540830 A
(43)申请公布日 2021.03.23
(73)专利权人 广州华资软件技术有限公司
地址 510665 广东省广州市天河区建中路
12号首层
(72)发明人 张士松 何健安 雷邦宁 翁庄明 
彭本 
(74)专利代理机构 北京国标律师事务所 11753
代理人 姚克枫 董琪
(51)Int.Cl.
G06F  9/455(2006.01)
(56)对比文件CN  106656514 A ,2017.05.10CN  111597536 A ,2020.08.28CN  107257334 A ,2017.10.17审查员 李翠霞
(54)发明名称一种单JVM进程中同时支持多个Kerberos认证的方法(57)摘要本发明涉及一种单JVM进程中同时支持多个Kerberos认证的方法,步骤如下:对多个使用Kerberos认证的Hadoop集,逐个执行以下操作;步骤2.1,选定一个Hadoop集;步骤2.2,设置Kerberos认证的环境变量及参数;步骤2.3,发起Kerberos认证请求,生成票据并返回;步骤2.4,选定下一个Hadoop集,重复步骤2.2及2.3,直至多个Hadoop集均执行过Kerberos认证操作。本发明,在一个JVM进程(单JVM进程)中,同时可以使用(支持)两种以上Kerberos认证,实现了在单JVM进程中同时对多个Kerberos域中的软件服务进行访问,对两个以上均开启了Kerberos认证的软件服务的数据交互,提供了高效、
便利的Kerberos认证。权利要求书2页  说明书6页  附图2页CN 112540830 B 2022.03.04
C N  112540830
B
1.一种单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,包括如下步骤:
步骤1,确定独立的、使用Kerberos认证的Hadoop集的数量;所述Hadoop集分属不同厂商,各厂商将Kerberos认证建造在各自的域中;
步骤2,对步骤1确定的多个Hadoop集,逐个执行以下Kerberos认证操作;
步骤2.1,选定一个未执行过Kerberos认证操作的Hadoop集;
步骤2.2,设置Kerberos认证的环境变量及参数,具体包括:
客户配置文件java.f,从Kerberos域提供商获取,所述客户配置文件中包含Kerberos域配置信息;
登陆所需的账号密码或.keytab文件,所述.keytab文件从Kerberos域提供商获取默认登陆域名;
利用java反射技术,修改客户配置文件java.f,实现在单个JVM中能够切换为不同域
配置;所述修改客户配置文件java.f,具体步骤如下:
获取到sun.security.krb5.Config类的引用,
利用Java反射技术调用sun.security.krb5.Config类的静态方法refresh;
利用java反射技术,修改默认登陆域名,实现在单个JVM中能够访问到不同的Kerberos 域保护下的软件服务;所述修改默认登陆域名,具体步骤如下:
获取类的私有属性,所述类指org.apache.hadoop.security.authentication.util. KerberosName类,
设置该私有属性的可访问性为true,
利用Java反射技术设置该私有属性defaultRealm为默认登陆域名;
步骤2.3,发起Kerberos认证请求,生成票据并返回;
步骤2.4,选定下一个未执行过Kerberos认证操作的Hadoop集,重复步骤2.2及2.3,直至步骤1确定的多个Hadoop集均执行过Kerberos认证操作。
2.如权利要求1所述的单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,所述默认登陆域
名,通过写入客户端依赖包中完成设置。
3.如权利要求2所述的单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,客户端依赖包通过org.apache.hadoop.security.authentication.util.KerberosName类存储默认登陆域名。
4.如权利要求1所述的单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,所述发起Kerberos认证请求,具体步骤如下:
根据当前设置好的Kerberos认证的环境变量及参数,构建准备进行Kerberos认证的上下文环境,然后调用类的登陆方法获取软件服务的连接,对所述上下文环境进行认证。
5.如权利要求1所述的单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,在单个JVM下,设定多线程模式,步骤2.2及2.3分别在不同线程中执行。
6.如权利要求5所述的单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,当步骤2.2及2.3分别在不同线程中执行时,具体步骤如下:
首先,获取一同步锁,确保同一时间只能有一个线程进行操作,即:步骤2.2及2.3不能同时进行操作;
然后,执行步骤2.2或2.3;
再后,当执行步骤2.2或2.3完毕,释放同步锁。
一种单JVM进程中同时支持多个Kerberos认证的方法
技术领域
[0001]本发明涉及JVM进程(Java虚拟机进程)中的安全认证技术领域,具体说是一种单JVM进程中同时支持多个Kerberos认证的方法。
背景技术
[0002]Hadoop被公认是一套行业大数据标准开源软件,得益于其分布式架构以及自身在数据提取、转换和加载方面的天然优势,在分布式环境下可提供海量数据处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务,Hadoop在大数据处理应用中得到广泛应用。
[0003]由于信息安全需要,Hadoop平台数据源中经常使用Kerberos认证(Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证)保障数据安全,Kerberos认证主要用于计算机网络的身份鉴别,其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据访问多个软件服务,由于在每个客户端和服务端之间建立了共享密钥,使得该协议具有相当的安全性。
[0004]现有技术中,Java原生对Kerberos认证技术存在使用受限的问题,所述使用受限是指:在单JVM进程中,同时仅能使用(支持)一种Kerberos认证,即:在单JVM进程中,同时不能使用(支持)两种以上Kerberos认证。
[0005]在实际业务中,经常会出现需要同时访问两个以上厂商的多套产品的情况,不同厂商有着各自的Kerberos认证服务,通常厂商会将Kerberos认证建造在各自的域(主机)中。这种情况下,一个Java应用需要连接两个独立的、使用Kerberos认证的Hadoop集,单JVM进程单Kerberos认证显然不能满足业务需要。
[0006]公开于该背景技术部分的信息仅仅旨在加深对本发明的总体背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。
发明内容
[0007]针对现有技术中存在的缺陷,本发明的目的在于提供一种单JVM进程中同时支持多个Kerberos认证的方法,在一个JVM进程(单JVM进程)中,同时可以使用(支持)两种以上Kerberos认证,实现了在单JVM进程中同时对多个Kerberos域中的软件服务进行访问,对两个以上均开启了Kerberos认证的软件服务的数据交互,提供了高效、便利的Kerberos认证。[0008]为达到以上目的,本发明采取的技术方案是:
[0009]一种单JVM进程中同时支持多个Kerberos认证的方法,其特征在于,包括如下步骤:
[0010]步骤1,确定独立的、使用Kerberos认证的Hadoop集的数量;
[0011]步骤2,对步骤1确定的多个Hadoop集,逐个执行以下Kerberos认证操作;[0012]步骤2.1,选定一个未执行过Kerberos认证操作的Hadoop集;
[0013]步骤2.2,设置Kerberos认证的环境变量及参数;
[0014]步骤2.3,发起Kerberos认证请求,生成票据并返回;
[0015]步骤2.4,选定下一个未执行过Kerberos认证操作的Hadoop集,重复步骤2.2及2.3,直至步骤1确定的多个Hadoop集均执行过Kerberos认证操作。
[0016]在上述技术方案的基础上,所述设置Kerberos认证的环境变量及参数,具体包括:[0017]客户配置文件java.f,从Kerberos域提供商获取,所述客户配置文件中包含Kerberos域配置信息;
[0018]登陆所需的账号密码或.keytab文件,所述.keytab文件从Kerberos域提供商获取;
[0019]默认登陆域名。
[0020]在上述技术方案的基础上,所述默认登陆域名,通过写入客户端依赖包中完成设置。
[0021]在上述技术方案的基础上,客户端依赖包通过org.apache.hadoop.security.au thentication.util.KerberosName类存储默认登陆域名。
[0022]在上述技术方案的基础上,利用j a v a反射技术,修改客户配置文件java.f,实现在单个JVM中能够切换为不同域配置;
[0023]利用java反射技术,修改默认登陆域名,实现在单个JVM中能够访问到不同的Kerberos域保护下的软件服务。
[0024]在上述技术方案的基础上,所述修改客户配置文件java.f,具体步骤如下:
[0025]获取到sun.security.krb5.Config类的引用,
[0026]利用Java反射技术调用sun.security.krb5.Config类的静态方法refresh;[0027]所述修改默认登陆域名,具体步骤如下:
[0028]获取类的私有属性,所述类指org.apache.hadoop.security.authentication.u til.KerberosName类,
[0029]设置该私有属性的可访问性为true,
[0030]利用Java反射技术设置该私有属性defaultRealm为默认登陆域名。
[0031]在上述技术方案的基础上,所述发起Kerberos认证请求,具体步骤如下:[0032]根据当前设置好的Kerberos认证的环境变量及参数,构建准备进行Kerberos认证的上下文环境,然后调用类的登陆方法获取软件服务的连接,对所述上下文环境进行认证。[0033]在上述技术方案的基础上,在单个JVM下,设定多线程模式,步骤2.2及2.3分别在不同线程中执行。
[0034]在上述技术方案的基础上,当步骤2.2及2.3分别在不同线程中执行时,具体步骤如下:
[0035]首先,获取一同步锁,确保同一时间只能有一个线程进行操作,即:步骤2.2及2.3不能同时进行操作;
[0036]然后,执行步骤2.2或2.3;
[0037]再后,当执行步骤2.2或2.3完毕,释放同步锁。
[0038]本发明所述的单JVM进程中同时支持多个Kerberos认证的方法,具有以下有益效果:

本文发布于:2024-09-21 15:50:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/404950.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:认证   技术   步骤   软件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议