一种云平台混合身份认证方法及系统

未命名 07-12 阅读:107 评论:0


1.本发明涉及用户身份认证的技术领域,尤其是指一种云平台混合身份认证方法及系统。


背景技术:

2.近年来,国内外互联网技术迅速发展,人工智能、数字政务等新技术、新应用层出不穷,这些新兴应用对计算机的计算能力和存储资源提出了新的要求,与之相应的,云平台技术也被广泛应用于各种生产环境和生活当中,不仅是大型企业,一些中小企业也开始成为了云平台的提供者。
3.为了提高资源利用率和降低成本,有相当一部分中小企业的云平台是基于企业内部服务器的延申,对于用户的访问控制也是基于企业内部原有的角色分配的方式进行,但是这种做法无法有效地将来自内部的请求和来自外部的请求区分开,会出现外部请求抢占服务器资源,影响内部业务正常开展地情况,另外,开放接口的需求一般会比较多样化,客户有自己的定制化需求,如果采用增加角色的方式来对外部请求进行管理,则会导致服务器内部需要存放很多不同的角色类型及其对应的权限,这对服务器资源是一种浪费。故而企业需求一种可以将内部资源作为云平台服务公开给普通用户,同时又能高效地分别管理企业内部人员和外部普通用户的认证方法。
4.综上,发明一种云平台混合身份认证方法及系统,具有较高实际应用价值。


技术实现要素:

5.本发明的第一目的在于克服现有技术的缺点和不足,提出了一种云平台混合身份认证方法,可以有效地解决云平台技术中无法高效地区分内部用户和外部用户的问题,以提高云平台资源利用率,满足安全性需求。
6.本发明的第二目的在于提供一种云平台混合身份认证系统。
7.本发明的第一目的通过下述技术方案实现:一种云平台混合身份认证方法,包括以下步骤:
8.1)内部用户通过web应用将用户名、邮箱、手机号码和密码发送到云平台主应用进行账号注册,注册成功后云平台主应用会通过邮件代理服务器向用户的邮箱发送验证邮件,用户进入验证邮件点击确认,确认成功则账号激活;
9.2)将已激活的账号的用户名及密码,输入web应用的登陆界面,之后云平台主应用通过短信代理服务器向用户的手机号码发送带有验证码的短信,用户在限定时间内输入验证码则登录成功,并获得含有该账号信息的jwt;
10.3)利用生成的jwt访问云平台主应用的内部接口,云平台主应用对jwt进行验证,如jwt是合法的,则允许用户访问内部接口;
11.4)在内部接口中,选择用以生成api key的接口,自定义权限之后,生成相应的api key;
12.5)第三方用户利用生成的api key,对云平台主应用开放接口进行访问,云平台主应用对api key进行验证,若api key是合法的,则执行下一步操作,否则结束流程;
13.6)云平台主应用调用限流器,再根据限流器判断用户请求频率是否已经超过上限,若未超过则允许访问云平台主应用接口,否则结束流程。
14.进一步,在步骤1)中,云平台主应用会对用户提供的用户名、邮箱、手机号码和密码进行有效性判断,用户名必须长于4个字节,密码必须长于8个字节且至少包含英文字母大、小写和半角标点符号其中的两种,邮箱必须是合法的邮箱规格,手机号码必须是11位手机号码,验证成功后云平台主应用会通过邮件代理服务器向用户邮箱发送确认邮件,只有用户通过该邮件进行确认后,账号才会变更为激活状态。
15.进一步,在步骤2)中,云平台主应用会在确定用户提供的用户名和密码是正确的前提下,通过短信代理服务器向用户的手机号码发送带有验证码的短信,该验证码的有效期为5分钟,用户若在5分钟内于登陆界面输入正确的验证码,就能成功登录,此时云平台主应用会将jwt发送给用户。
16.进一步,在步骤2)中,jwt的特征如下:
17.header,即jwt头部,记录了整个jwt的类型和签名算法,它的格式是一个json对象,该对象记录了签名部分使用的签名算法以及整个jwt的类型;设置好之后就能够生成header部分;具体的生成方式是对json对象使用base64url编码,编码完成之后会形成header字符串;
18.payload,即jwt的主体信息,它仍然是一个json对象,它包含发行者、发布时间、到期时间、主题和听众信息,以上的信息是可选的,能够全写,也能够一个都不写,在写入信息之后,对json对象进行base64 url编码,得到payload字符串;
19.signature,即jwt的签名,它保证了整个jwt不会遭到篡改,这一部分的生成方式,是对header和payload两个部分的编码结果,按照头部指定的方式进行加密;
20.将header、payload和signature三个部分组合在一起,就得到了完整的jwt,由于签名使用的密钥保存在云平台主应用,因此非法用户无法伪造出签名,安全性得到了保证。
21.进一步,在步骤3)中,jwt的验证包括以下步骤:
22.3.1)云平台主应用在接收到jwt之后,对header和payload两个部分用同样的密钥和加密算法进行重新加密;
23.3.2)把步骤3.1)中加密的结果和传入的jwt的signature进行对比;如果完全相同,则表示前面两部分没有遭到篡改,该jwt是可信的,能够执行下一步的操作;如果对比结果不相同,则说明该jwt遭到了篡改,是不可信的,将拒绝该用户的请求;
24.3.3)当步骤3.2)中对jwt的验证结果为完全相同,云平台主应用验证payload中的有效期,如果未过期,则允许访问,如果已经过期,则拒绝访问,拒绝访问后用户需要重新进行登录,获取新的jwt。
25.进一步,在步骤4)中,api key的形式是uuid;api key由内部用户的账号生成,从属于该用户的账号,用户能查看属于他的账号的所有api key及其权限,用户能对api key的权限进行修改,能删除指定的api key,保证了第三方用户的权限受到内部用户的管理,提高了系统的安全性。
26.进一步,在步骤5)中,api key的验证包括以下步骤:
27.5.1)第三方用户从内部用户处获得api key后,携带该api key访问云平台主应用的开放端口;
28.5.2)云平台主应用在接收到api key之后,对该api key的有效性进行判断;如果该api key不存在,则拒绝用户的访问;如果该api key存在,则判断该api key的权限,如果拥有对应接口的访问权限,则允许下一步操作,否则拒绝访问。
29.进一步,在步骤6)中,云平台主应用中的限流器会拦截请求,并在缓存中寻找api key的访问频率,如果访问频率超过了设定的上限,则拒绝该次访问,如果未超过则允许该次访问。
30.本发明的第二目的通过下述技术方案实现:一种云平台混合身份认证系统,用于实现上述的云平台混合身份认证方法,包括:
31.web应用,用于将用户输入的用户名、邮箱、手机号码、密码和api key生成请求发送到云平台主应用,并从云平台主应用接收jwt和api key;
32.云平台主应用,用于接收web应用发送过来的用户名、邮箱、手机号码、密码和api key生成请求,并给web应用发送jwt和api key;用于接收第三方用户发送过来的开放端口访问请求;用于向邮件代理服务器和短信代理服务器发送请求;
33.邮件代理服务器,用于接收云平台主应用的邮件发送请求,并向用户邮箱发送邮件;
34.短信代理服务器,用于接收云平台主应用的短信发送请求,并向用户手机发送短信。
35.进一步,web应用还用于在登陆时发送短信验证码给云平台主应用。
36.进一步,云平台主应用的接口分为内部接口和开放接口,内部接口只有持有jwt的用户可以访问,开放接口则是持有jwt或api key均可访问。
37.进一步,云平台主应用还用于对外部请求进行限流,并在超过限流额度后拒绝外部请求。
38.本发明与现有技术相比,具有如下优点与有益效果:
39.1、本发明对内部访问和外部访问进行了有效的区分,可以分别对两种不同的访问方式进行权限设置和访问控制,降低了模块间的耦合度,最大化地利用了企业服务器的计算资源,提高了资源利用率。
40.2、本发明中api key是从属于某一个内部用户的,因此该内部用户可以有目的地申请和删除api key,并按照需要修改api key所对应的权限,外部用户的权限在内部用户的控制之下,这便于实时对访问控制策略进行调整,提高了系统在开放状态下的安全性。
41.3、本发明中api key采用了uuid的形式进行存储,并且密钥长度可以视企业方的需求进行更改。uuid发生重复的可能性低,并且api key长度越长,重复的可能性就越低,有效地避免了暴力破解攻击。
42.4、本发明同时用到了邮箱激活和短信动态验证码的认证方式,提高了用户账号的安全性,防止了重放攻击和暴力攻击。
附图说明
43.图1为本发明方法的流程图。
44.图2为本发明方法中生成jwt的流程图。
45.图3为本发明系统的架构图。
具体实施方式
46.下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
47.术语解释:
48.jwt,全称json web token,是一个开源标准,它定义了一种紧凑且自完备的方法用于在各参与方之间以json对象传递信息。以该种方式传递的信息已经被数字签名,因而可以被验证并且被信任。
49.uuid,全称universally unique identifier,是由标准化格式生成和表示的唯一标识符,其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央发行机构。
50.实施例1
51.如图1和图2所示,本实施例公开了一种云平台混合身份认证方法,包括以下步骤:
52.1)内部用户通过web应用将用户名user1、邮箱、手机号码和密码发送到云平台主应用进行账号注册,注册成功后云平台主应用会通过网易的邮件代理服务器向用户的邮箱发送验证邮件,用户进入验证邮件点击确认,确认成功则账号激活;
53.2)将步骤1)中已激活的账号的用户名user1及密码,输入web应用的登陆界面,之后云平台主应用通过短信代理服务器向用户的手机号码发送带有验证码的短信,用户在限定时间内输入验证码则登录成功,并获得含有该账号信息的jwt,具体值为eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyj1c2vyx2lkijoylcj1c2vybmftzsi6invzzxixiiwizxhwijoxnjc3oduymdm4lcjlbwfpbci6ijexmubxcs5jb20ifq.b42qtfginbok2jinazc27tyoqq6f6un7a9rq6zk_s8w,jwt的具体内容包括了:
54.header,即jwt的头部,记录了整个jwt的类型和签名算法。它是一个json对象,该对象记录了签名部分使用的签名算法以及整个jwt的类型,内容如下:
55.{"typ":"jwt","alg":"hs256"}
56.设置好之后对该json对象使用base64 url编码,编码完成之后会形成header字符串,具体值为eyj0exaioijkv1qilcjhbgcioijiuzi1nij9。
57.payload,即jwt的主体信息,它是一个json对象,具体包含了user_id、username、exp、email等,以上的信息是可选的,可以全写,也可以一个都不写。在写入信息之后,对json对象进行base64 url编码,得到payload字符串,具体值为eyj1c2vyx2lkijoylcj1c2vybmftzsi6invzzxixiiwizxhwijoxnjc3oduymdm4lcjlbwfpbci6ijexmubxcs5jb20ifq。
58.signature,即jwt的签名,它保证了整个jwt不会遭到篡改。这一部分的生成方式,是对header和payload两个部分的编码结果,按照头部指定的方式hmac-sha256算法进行加密,计算得到最终的具体值为b42qtfginbok2jinazc27tyoqq6f6un7a9rq6zk_s8w。
59.将header、payload和signature三个部分组合在一起,就得到了完整的jwt,具体值为eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.eyj1c2vyx2lkijoylcj1c2vybmftzsi6invzzxixiiwizxhwijoxnjc3oduymdm4lcjlbwfpbci6ijexmubxcs5jb20ifq.b42qtfginbok2jin
key生成请求,并给web应用发送jwt和api key;用于接收第三方用户发送过来的开放端口访问请求;用于向邮件代理服务器和短信代理服务器发送请求;
74.邮件代理服务器,用于接收云平台主应用的邮件发送请求,并向用户邮箱发送邮件;
75.短信代理服务器,用于接收云平台主应用的短信发送请求,并向用户手机发送短信。
76.具体地,web应用还用于在登陆时发送短信验证码给云平台主应用。
77.具体地,云平台主应用的接口分为内部接口和开放接口,内部接口只有持有jwt的用户可以访问,开放接口则是持有jwt或api key均可访问。
78.具体地,云平台主应用还用于对外部请求进行限流,并在超过限流额度后拒绝外部请求。
79.上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围。

技术特征:
1.一种云平台混合身份认证方法,其特征在于,包括以下步骤:1)内部用户通过web应用将用户名、邮箱、手机号码和密码发送到云平台主应用进行账号注册,注册成功后云平台主应用会通过邮件代理服务器向用户的邮箱发送验证邮件,用户进入验证邮件点击确认,确认成功则账号激活;2)将已激活的账号的用户名及密码,输入web应用的登陆界面,之后云平台主应用通过短信代理服务器向用户的手机号码发送带有验证码的短信,用户在限定时间内输入验证码则登录成功,并获得含有该账号信息的jwt;3)利用生成的jwt访问云平台主应用的内部接口,云平台主应用对jwt进行验证,如jwt是合法的,则允许用户访问内部接口;4)在内部接口中,选择用以生成apikey的接口,自定义权限之后,生成相应的api key;5)第三方用户利用生成的api key,对云平台主应用开放接口进行访问,云平台主应用对api key进行验证,若api key是合法的,则执行下一步操作,否则结束流程;6)云平台主应用调用限流器,再根据限流器判断用户请求频率是否已经超过上限,若未超过则允许访问云平台主应用接口,否则结束流程。2.根据权利要求1所述的一种云平台混合身份认证方法,其特征在于,在步骤1)中,云平台主应用会对用户提供的用户名、邮箱、手机号码和密码进行有效性判断,用户名必须长于4个字节,密码必须长于8个字节且至少包含英文字母大、小写和半角标点符号其中的两种,邮箱必须是合法的邮箱规格,手机号码必须是11位手机号码,验证成功后云平台主应用会通过邮件代理服务器向用户邮箱发送确认邮件,只有用户通过该邮件进行确认后,账号才会变更为激活状态。3.根据权利要求2所述的一种云平台混合身份认证方法,其特征在于,在步骤2)中,云平台主应用会在确定用户提供的用户名和密码是正确的前提下,通过短信代理服务器向用户的手机号码发送带有验证码的短信,该验证码的有效期为5分钟,用户若在5分钟内于登陆界面输入正确的验证码,就能成功登录,此时云平台主应用会将jwt发送给用户。4.根据权利要求3所述的一种云平台混合身份认证方法,其特征在于,在步骤2)中,jwt的特征如下:header,即jwt头部,记录了整个jwt的类型和签名算法,它的格式是一个json对象,该对象记录了签名部分使用的签名算法以及整个jwt的类型;设置好之后就能够生成header部分;具体的生成方式是对json对象使用base64url编码,编码完成之后会形成header字符串;payload,即jwt的主体信息,它仍然是一个json对象,它包含发行者、发布时间、到期时间、主题和听众信息,以上的信息是可选的,能够全写,也能够一个都不写,在写入信息之后,对json对象进行base64 url编码,得到payload字符串;signature,即jwt的签名,它保证了整个jwt不会遭到篡改,这一部分的生成方式,是对header和payload两个部分的编码结果,按照头部指定的方式进行加密;将header、payload和signature三个部分组合在一起,就得到了完整的jwt,由于签名使用的密钥保存在云平台主应用,因此非法用户无法伪造出签名,安全性得到了保证。5.根据权利要求4所述的一种云平台混合身份认证方法,其特征在于,在步骤3)中,jwt的验证包括以下步骤:
3.1)云平台主应用在接收到jwt之后,对header和payload两个部分用同样的密钥和加密算法进行重新加密;3.2)把步骤3.1)中加密的结果和传入的jwt的signature进行对比;如果完全相同,则表示前面两部分没有遭到篡改,该jwt是可信的,能够执行下一步的操作;如果对比结果不相同,则说明该jwt遭到了篡改,是不可信的,将拒绝该用户的请求;3.3)当步骤3.2)中对jwt的验证结果为完全相同,云平台主应用验证payload中的有效期,如果未过期,则允许访问,如果已经过期,则拒绝访问,拒绝访问后用户需要重新进行登录,获取新的jwt。6.根据权利要求5所述的一种云平台混合身份认证方法,其特征在于,在步骤4)中,api key的形式是uuid;api key由内部用户的账号生成,从属于该用户的账号,用户能查看属于他的账号的所有api key及其权限,用户能对api key的权限进行修改,能删除指定的api key,保证了第三方用户的权限受到内部用户的管理,提高了系统的安全性。7.根据权利要求6所述的一种云平台混合身份认证方法,其特征在于,在步骤5)中,api key的验证包括以下步骤:5.1)第三方用户从内部用户处获得api key后,携带该api key访问云平台主应用的开放端口;5.2)云平台主应用在接收到api key之后,对该api key的有效性进行判断;如果该api key不存在,则拒绝用户的访问;如果该api key存在,则判断该api key的权限,如果拥有对应接口的访问权限,则允许下一步操作,否则拒绝访问。8.根据权利要求7所述的一种云平台混合身份认证方法,其特征在于,在步骤6)中,云平台主应用中的限流器会拦截请求,并在缓存中寻找api key的访问频率,如果访问频率超过了设定的上限,则拒绝该次访问,如果未超过则允许该次访问。9.一种云平台混合身份认证系统,其特征在于,用于实现上述权利要求1-8任意一项所述的云平台混合身份认证方法,包括:web应用,用于将用户输入的用户名、邮箱、手机号码、密码和api key生成请求发送到云平台主应用,并从云平台主应用接收jwt和api key;云平台主应用,用于接收web应用发送过来的用户名、邮箱、手机号码、密码和api key生成请求,并给web应用发送jwt和api key;用于接收第三方用户发送过来的开放端口访问请求;用于向邮件代理服务器和短信代理服务器发送请求;邮件代理服务器,用于接收云平台主应用的邮件发送请求,并向用户邮箱发送邮件;短信代理服务器,用于接收云平台主应用的短信发送请求,并向用户手机发送短信。10.根据权利要求9所述的一种云平台混合身份认证系统,其特征在于,所述web应用还用于在登陆时发送短信验证码给云平台主应用;云平台主应用的接口分为内部接口和开放接口,内部接口只有持有jwt的用户能够访问,开放接口则是持有jwt或api key均能访问;云平台主应用还用于对外部请求进行限流,并在超过限流额度后拒绝外部请求。

技术总结
本发明公开了一种云平台混合身份认证方法及系统,包括:1)内部用户进行账号注册,注册成功后进入验证邮件点击确认激活账号;2)将用户名及密码输入登陆界面,之后在限定时间内输入验证码则登录成功,并获得JWT;3)利用JWT访问云平台主应用的内部接口,若JWT是合法的,则允许用户访问内部接口;4)在内部接口中,选择用以生成API Key的接口,自定义权限之后,生成相应的API Key;5)利用API Key访问云平台主应用开放接口,若API Key是合法的,则执行下一步操作;6)若用户请求频率未超过上限,则允许访问云平台主应用接口。本发明解决了企业服务器难以兼顾内外部用户管理以及无法充分利用服务器资源的问题。务器资源的问题。务器资源的问题。


技术研发人员:田联房 吴佳华 杜启亮
受保护的技术使用者:华南理工大学
技术研发日:2023.03.27
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐