一种基于JWT的客户端认证方法及系统技术方案

技术编号:32510235 阅读:21 留言:0更新日期:2022-03-02 10:53
本发明专利技术涉及一种基于JWT的客户端认证方法及系统,该方法包括:用户权限中心模块接收到客户端发起的登录请求后将生成的JWT发送到安全网关模块;安全网关模块对JWT、指纹ID、客户端信息进行加密,将加密后的信息URJWT发送到客户端;当客户端向安全网关模块进行业务请求时,请求头中携带URJWT和指纹ID;安全网关模块对接收到的业务请求的请求头中携带的URJWT进行解密,当解密获得的指纹ID和客户端信息与业务请求中指纹ID和客户端信息相同时,将解密后JWT发送到应用网关模块;当解密获得的JWT与Redis中存储的JWT相同时,应用网关模块将业务请求发送到业务系统。本发明专利技术提高了客户端认证的安全性。的安全性。的安全性。

【技术实现步骤摘要】
一种基于JWT的客户端认证方法及系统


[0001]本专利技术涉及互联网安全通信
,特别是涉及一种基于JWT的客户端认证方法及系统。

技术介绍

[0002]目前互联网比较主流的方式是用JWT来做无状态的服务沟通,通过该JWT可以传输用户信息,并且通过对称加密来保证JWT本身无法被篡改,由于JWT本体是由Base64算法编码的,有不可读性,但对于计算机系统来说是透明的,因为编码解码过程很简单,可以直接获取明文内容,故会导致一些信息会泄露到客户端。

技术实现思路

[0003]本专利技术的目的是提供一种基于JWT的客户端认证方法及系统,提高了客户端认证的安全性。
[0004]为实现上述目的,本专利技术提供了如下方案:
[0005]一种基于JWT的客户端认证方法,包括:
[0006]通过客户端发起的登录请求依次通过安全网关模块和应用网关模块后发送到用户权限中心模块;所述登录请求包括提交表单和客户端信息;所述提交表单的请求头中包括登录指纹ID;
[0007]通过所述用户权限中心模块验证所述提交表单,验证通过后,通过JWT库生成JWT,并将生成的所述JWT存储于Redis中,通过所述用户权限中心模块将生成的所述JWT通过所述应用网关模块发送到所述安全网关模块;
[0008]所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端;
[0009]所述客户端接收到所述URJWT后,将所述URJWT保存到会话中,当通过所述客户端向所述安全网关模块进行业务请求时,所述业务请求的请求头中携带所述URJWT和业务请求指纹ID;
[0010]当所述安全网关模块接收到所述业务请求时,对所述业务请求的请求头中携带的所述URJWT进行解密,将解密获得的登录指纹ID与所述业务请求指纹ID进行比对,将解密获得的客户端信息与所述业务请求中的客户端信息进行比对,当解密获得的登录指纹ID与所述业务请求指纹ID相同且解密获得的客户端信息与所述业务请求中的客户端信息相同时,将解密获得的JWT发送到应用网关模块;
[0011]所述应用网关模块接收到解密获得的JWT后,将解密获得的JWT与Redis中存储的JWT进行比较,当解密获得的JWT与Redis中存储的JWT相同时,将所述业务请求发送到业务系统,当前所述业务请求的请求头中携带解密获得的JWT;
[0012]当所述业务系统接收到所述业务请求时进行业务行为,并将业务行为的结果发送到所述客户端。
[0013]可选地,所述客户端信息包括客户端IP和客户端代理信息。
[0014]可选地,所述通过客户端发起的登录请求依次通过安全网关模块和应用网关模块后发送到用户权限中心模块,具体包括:
[0015]通过客户端将用户发起的登录请求提交到安全网关模块;所述登录请求包括URL地址;
[0016]通过所述安全网关模块将所述登录请求发送到应用网关模块;
[0017]通过所述应用网关模块对所述登录请求中的所述URL地址进行验证,若所述登录请求中的所述URL地址与所述应用网关模块配置的地址一致,则通过应用网关模块的地址验证;
[0018]通过所述应用网关模块将通过地址验证的所述登录请求中的提交表单发送到用户权限中心模块。
[0019]可选地,所述通过所述用户权限中心模块验证所述提交表单,具体包括:
[0020]通过所述用户权限中心模块验证所述提交表单中的用户名和用户密码与数据库中存储的用户名和用户密码是否一致,若一致,则通过验证。
[0021]可选地,所述登录指纹ID通过FingerPrintJS库生成。
[0022]可选地,所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端,具体包括:
[0023]所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行DES算法加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端。
[0024]可选地,所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行DES算法加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端,具体包括:
[0025]所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行加盐及DES算法加密,将加盐加密后的信息定义为URJWT,将所述URJWT发送到所述客户端。
[0026]本专利技术还公开了一种基于JWT的客户端认证系统,包括客户端、安全网关模块、应用网关模块、用户权限中心模块和业务系统;
[0027]所述客户端用于发送登录请求和业务请求;所述客户端还用于在接收到所述URJWT后,将所述URJWT保存到会话中,当向所述安全网关模块进行业务请求时,所述业务请求的请求头中携带所述URJWT和业务请求指纹ID;所述登录请求包括提交表单和客户端信息;所述提交表单的请求头中包括登录指纹ID;
[0028]所述安全网关模块用于接收所述登录请求并将所述登录请求发送到所述应用网关模块;所述安全网关模块还用于接收所述应用网关模块发送的JWT,对所述JWT、所述登录指纹ID、所述客户端信息进行加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端;所述安全网关模块还用于在接收到所述业务请求时,对所述业务请求的请求头中携带的所述URJWT进行解密,将解密获得的登录指纹ID与所述业务请求指纹ID进行比对,将解密获得的客户端信息与所述业务请求中的客户端信息进行比对,当解密获得的登录指纹ID与所述业务请求指纹ID相同且解密获得的客户端信息与所述业务请求中的客户端信息
相同时,将解密获得的JWT发送到应用网关模块;
[0029]所述应用网关模块用于接收所述登录请求并发送到所述用户权限中心模块;所述应用网关模块还用于接收所述用户权限中心模块发送的所述JWT并将所述JWT发送到所述安全网关模块;所述应用网关模块还用于在接收到解密获得的JWT后,将解密获得的JWT与Redis中存储的JWT进行比较,当解密获得的JWT与Redis中存储的JWT相同时,将所述业务请求发送到业务系统,当前所述业务请求的请求头中携带解密获得的JWT;
[0030]所述用户权限中心模块用于验证所述提交表单,验证通过后,通过JWT库生成JWT,并将生成的所述JWT存储于Redis中,将生成的所述JWT发送到所述应用网关模块;
[0031]所述业务系统用于接收到所述业务请求时进行业务行为,并将业务行为的结果发送到所述客户端。
[0032]可选地,所述客户端信息包括客户端IP和客户端代理信息。
[0033]可选地,所述登录指纹ID通过FingerPrintJS库生成。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于JWT的客户端认证方法,其特征在于,包括:通过客户端发起的登录请求依次通过安全网关模块和应用网关模块后发送到用户权限中心模块;所述登录请求包括提交表单和客户端信息;所述提交表单的请求头中包括登录指纹ID;通过所述用户权限中心模块验证所述提交表单,验证通过后,通过JWT库生成JWT,并将生成的所述JWT存储于Redis中,通过所述用户权限中心模块将生成的所述JWT通过所述应用网关模块发送到所述安全网关模块;所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信息进行加密,将加密后的信息定义为URJWT,将所述URJWT发送到所述客户端;所述客户端接收到所述URJWT后,将所述URJWT保存到会话中,当通过所述客户端向所述安全网关模块进行业务请求时,所述业务请求的请求头中携带所述URJWT和业务请求指纹ID;当所述安全网关模块接收到所述业务请求时,对所述业务请求的请求头中携带的所述URJWT进行解密,将解密获得的登录指纹ID与所述业务请求指纹ID进行比对,将解密获得的客户端信息与所述业务请求中的客户端信息进行比对,当解密获得的登录指纹ID与所述业务请求指纹ID相同且解密获得的客户端信息与所述业务请求中的客户端信息相同时,将解密获得的JWT发送到应用网关模块;所述应用网关模块接收到解密获得的JWT后,将解密获得的JWT与Redis中存储的JWT进行比较,当解密获得的JWT与Redis中存储的JWT相同时,将所述业务请求发送到业务系统,当前所述业务请求的请求头中携带解密获得的JWT;当所述业务系统接收到所述业务请求时进行业务行为,并将业务行为的结果发送到所述客户端。2.根据权利要求1所述的基于JWT的客户端认证方法,其特征在于,所述客户端信息包括客户端IP和客户端代理信息。3.根据权利要求1所述的基于JWT的客户端认证方法,其特征在于,所述通过客户端发起的登录请求依次通过安全网关模块和应用网关模块后发送到用户权限中心模块,具体包括:通过客户端将用户发起的登录请求提交到安全网关模块;所述登录请求包括URL地址;通过所述安全网关模块将所述登录请求发送到应用网关模块;通过所述应用网关模块对所述登录请求中的所述URL地址进行验证,若所述登录请求中的所述URL地址与所述应用网关模块配置的地址一致,则通过应用网关模块的地址验证;通过所述应用网关模块将通过地址验证的所述登录请求中的提交表单发送到用户权限中心模块。4.根据权利要求1所述的基于JWT的客户端认证方法,其特征在于,所述通过所述用户权限中心模块验证所述提交表单,具体包括:通过所述用户权限中心模块验证所述提交表单中的用户名和用户密码与数据库中存储的用户名和用户密码是否一致,若一致,则通过验证。5.根据权利要求1所述的基于JWT的客户端认证方法,其特征在于,所述登录指纹ID通过FingerPrintJS库生成。
6.根据权利要求1所述的基于JWT的客户端认证方法,其特征在于,所述安全网关模块接收到所述JWT后,对所述JWT、所述登录指纹ID、所述客户端信...

【专利技术属性】
技术研发人员:李松亚张顺晨石贇黄国珉吴涛周纬杨艳秋
申请(专利权)人:上海欧冶金融信息服务股份有限公司
类型:发明
国别省市:

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

1