CN116015739A - 前后端数据交互方法、装置、服务器及存储介质 - Google Patents
前后端数据交互方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN116015739A CN116015739A CN202211551871.3A CN202211551871A CN116015739A CN 116015739 A CN116015739 A CN 116015739A CN 202211551871 A CN202211551871 A CN 202211551871A CN 116015739 A CN116015739 A CN 116015739A
- Authority
- CN
- China
- Prior art keywords
- token
- jwt
- data
- payload
- user account
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种前后端数据交互方法、装置、服务器及存储介质,其中方法包括接收前端发送的登录请求;利用登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;以第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;将JWT身份安全令牌返回给前端;接收前端发送的携带有所述JWT身份安全令牌的业务请求;解析JWT身份安全令牌获得第一Token ID;利用业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;比对第一Token ID和第二Token ID;若第一Token ID和第二Token ID相同,则执行业务请求的业务逻辑获得业务数据;将业务数据返回给前端。本发明当用户账号或前端运行环境发生改变时,JWT Token会失效,无法通过验证,强化了对前端用户身份的绑定。
Description
技术领域
本发明涉及数据交互技术领域,尤其涉及一种前后端数据交互方法、装置、服务器及存储介质。
背景技术
在互联网开发中,前后端的数据传输经常会用到基于HTTP协议的API接口,HTTP是无状态的,为了达到身份验证或鉴权目的,目前常规做法是使用令牌(token)的鉴权机制。Json Web Token(以下称JWT)是一个开放的标准(rfc7519),是令牌鉴权的一种具体实现方式。它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象方式安全地传输信息。
标准的JWT方案解决了用户认证的问题,但是存在的不足有:
1、有滥用、多用的风险,一个JWT令牌被生成后,用户可以将其复制给别人共享使用,权限和业务数据边界难以被真正限定。
2、存在被盗用的风险,黑客可以盗取用户JWT令牌,伪装成用户向后端发起请求获取数据,导致业务数据泄露,用户的身份认证难以被保护。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的旨在提供一种前后端数据交互方法、装置、设备及存储介质,以解决现有技术所述的上述问题。
本发明第一方面提供了一种前后端数据交互方法,包括以下步骤:
接收前端发送的登录请求;
利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;
以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;
将所述JWT身份安全令牌返回给所述前端;
接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;
解析所述JWT身份安全令牌获得所述第一Token ID;
利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;
比对所述第一Token ID和所述第二Token ID;
若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;
将所述业务数据返回给所述前端。
在本发明第一方面一种可选的实施实施方式中,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID包括:
从所述登录请求的用户账号数据中获取得到第一用户ID;
从所述登录请求的前端运行环境数据中获取得到第一用户IP和第一浏览器环境数据;
获取预存的字符串;
将所述第一用户ID、所述第一用户IP、所述第一浏览器环境数据和所述字符串依次拼接后通过预设的MD5信息摘要算法生成所述第一Token ID。
在本发明第一方面一种可选的实施实施方式中,所述将所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌包括:
将所述第一Token ID写入所述JWT有效载荷的所述jti属性中,并根据预先设置配置好所述JWT有效载荷中的其他属性和JWT头部;
对配置好的所述JWT头部和所述JWT有效载荷分别进行base64编码并通过预设的分隔号连接起来;
通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希;
通过所述分隔号将所述签名哈希连接在所述JWT有效载荷编码数据之后,获得所述JWT身份安全令牌。
在本发明第一方面一种可选的实施实施方式中,所述解析所述JWT身份安全令牌获得所述第一Token ID包括:
通过所述JWT身份安全令牌中的所述签名哈希校验所述JWT身份安全令牌中的所述JWT头部编码数据和所述JWT有效载荷编码数据是否被篡改;
若所述JWT头部编码数据和所述JWT有效载荷编码数据未被篡改;
对所述JWT有效载荷编码数据进行base64解码,获得所述JWT有效载荷;
从所述JWT有效载荷的jti属性中获得所述第一Token ID。
在本发明第一方面一种可选的实施实施方式中,所述利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID包括:
从所述业务请求的用户账号数据中获取得到第二用户ID;
从所述业务请求的前端运行环境数据中获取得到第二用户IP和第二浏览器环境数据;
获取预设的所述字符串;
将所述第二用户ID、所述第二用户IP、所述第二浏览器环境数据和所述字符串依次拼接后通过预设的所述MD5信息摘要算法生成所述第二Token ID。
在本发明第一方面一种可选的实施实施方式中,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID之前包括:
从所述登录请求中解析得到用户账号数据;
对所述用户账号数据进行验证;
当所述用户账号数据验证通过时,再从所述登录请求中解析得到前端运行环境数据。
在本发明第一方面一种可选的实施实施方式中,所述签名算法为SHA256算法,所述通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希包括:
获取预存的公钥;
利用所述公钥并基于SHA256算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名运算,获得所述签名哈希。
本发明第二方面提供了一种数据交互装置,用于服务器,所述数据交互装置包括:
登录请求接收模块,用于接收前端发送的登录请求;
第一Token ID生成模块,用于利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;
令牌生成模块,用于以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;
令牌返回模块,用于将所述JWT身份安全令牌返回给所述前端;
业务请求接收模块,用于接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;
令牌解析模块,用于解析所述JWT身份安全令牌获得所述第一Token ID;
第二Token ID生成模块,用于利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;
标识比对模块,用于比对所述第一Token ID和所述第二Token ID;
请求执行模块,用于若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;
数据返回模块,用于将所述业务数据返回给所述前端。
本发明第三方面提供了一种服务器,所述服务器包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述服务器执行如上述任一项所述的前后端数据交互方法。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的前后端数据交互方法。
有益效果:本发明提供了一种前后端数据交互方法、装置、服务器及存储介质,其中方法包括接收前端发送的登录请求;利用登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;以第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;将JWT身份安全令牌返回给前端;接收前端发送的携带有所述JWT身份安全令牌的业务请求;解析JWT身份安全令牌获得第一Token ID;利用业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;比对第一Token ID和第二Token ID;若第一Token ID和第二Token ID相同,则执行业务请求的业务逻辑获得业务数据;将业务数据返回给前端。本发明当用户账号或前端运行环境发生改变时,JWT Token会失效,无法通过验证,强化了对前端用户身份的绑定。
附图说明
图1为本发明一种前后端数据交互方法的一个实施例示意图;
图2为本发明一种数据交互装置的一个实施例示意图;
图3为本发明一种服务器的一个实施例示意图。
具体实施方式
本发明实施例提供了一种前后端数据交互方法、装置、服务器及存储介质。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示
或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
参阅图1,本发明第一方面提供了一种前后端数据交互方法,用于后端设备,包括以下步骤:
S100、接收前端发送的登录请求;在本发明中,前端主要是网页端,前端发送给后端的登录请求中除了用户账号数据之外还包括前端运行环境数据,用户账号数据包括用户名(用户ID)和登录密码,前端运行环境数据包括用户IP和浏览器环境数据,浏览器环境数据包括浏览器内核类型、版本号、和操作系统信息示例:Mozilla/4.0(compatible;MSIE8.0;Windows NT 5.1;Trident/4.0;.NET CLR 2.0.50727;InfoPath.2;AskTbPTV/5.17.0.25589;Alexa Toolbar));
S200、利用所述登录请求中的用户账号数据和前端运行环境数据生成第一TokenID;本发明使用了用户账号数据和前端运行环境数据来生成JWT Token中需要使用到的Token ID,这样当用户账号数据和/或前端运行环境数据发生改变时,JWT Token会失效,无法通过验证;
S300、以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;在本发明中,通过由用户账号数据和前端运行环境数据生成第一Token ID来作为JWT身份安全令牌中JWT标识,强化了对前端用户身份的绑定,很大程序上避免了背景技术中提到的JWT身份认证方案的两个不足;
S400、将所述JWT身份安全令牌返回给所述前端;在本发明中,所述JWT身份安全令牌返回给所述前端之后,前端会把所述JWT身份安全令牌存储在本地中,后续前端需要发起业务请求时,都会在业务请求中携带所述JWT身份安全令牌;
S500、接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;在本发明中,所述JWT身份安全令牌以JSON对象的方式写在所述业务请求的请求头的末端;示例性的,业务请求的请求头数据结构如下:
POST/100/index/sms/send HTTP/2
Host:api.yayibang.com
User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:107.0)Gecko/20100101Firefox/107.0
Accept:application/json,text/plain,*/*
Accept-Language:
zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,deflate,br
Content-Type:application/json;charset=utf-8
Token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9.BCwUy3jnUQ_E6TqCayc7rCHkx-vxxdagUwPOWqwYCFc;
其中的,Token对象后记载的字符串内容就是JWT身份安全令牌。
S600、解析所述JWT身份安全令牌获得所述第一Token ID;在本发明中,后端接收到业务请求之后,就会从业务请求中获取得到所述JWT身份安全令牌,然后解析出第一Token ID以用于后续的对比;
S700、利用所述业务请求中的用户账号数据和前端运行环境数据生成第二TokenID;在本发明中,前端发送给后端的业务请求中同样要携带请求对应的用户账号数据和前端运行环境数据,后端在上一步解析出了第一Token ID之后,就会根据业务请求携带的用户账号数据和前端运行环境数据生成业务请求对应的第二Token ID;
S800、比对所述第一Token ID和所述第二Token ID;在本发明中,通过比对所述第一Token ID和所述第二Token ID是否一致就可以知晓,如果业务请求时前端使用的用户账号数据和/或登录环境数据发生了改变,那么第二Token ID也会发生改变,所述第一TokenID和所述第二Token ID就会不同;
S900、若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;在本发明中,如果所述第一Token ID和所述第二Token ID相同则证明业务请求时前端使用的用户账号数据和登录环境数据未发生变化,可以确定请求数据的为同一前端设备,这时后端就可以执行业务请求中业务逻辑获取到对应业务数据返回给前端设备了;
S1000、将所述业务数据返回给所述前端。在本发明中,后端获取到了业务数据,直接把业务数据返回给前端即可,前端接收到业务数据后再展示给用户。
在本发明第一方面一种可选的实施实施方式中,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID包括:
从所述登录请求的用户账号数据中获取得到第一用户ID;
从所述登录请求的前端运行环境数据中获取得到第一用户IP和第一浏览器环境数据;所述第一浏览器环境数据包括浏览器内核类型、版本号和操作系统信息;
获取预存的字符串;在本发明中,所述字符串由后端随机生成,在生成之后,后续的生成Token ID的过程全部都使用这个随机生成的字符串,所述字符串的位数为5-10位,所述字符串的组成包括大小写字母和数字;
将所述第一用户ID、所述第一用户IP、所述第一浏览器环境数据和所述字符串依次拼接后通过预设的MD5信息摘要算法生成所述第一Token ID。
举例来说,上述的这些步骤就是将用户当前ID(如:13019),用户当前IP(如:222.244.194.150),用户当前浏览器环境数据和一个后端保存的随机字符串(如:N1iuAf)拼接,
拼接后的示例如:md5(13019222.244.194.150Mozilla/4.0(compatible;MSIE8.0;Windows NT 5.1;Trident/4.0;.NET CLR 2.0.50727;InfoPath.2;AskTbPTV/5.17.0.25589;Alexa Toolbar)N1iuAf);
之后再通过MD5算法生成签名串Token ID,得到Token ID为:28FFCBC5BED1FAA440AA2502B53EF861。
在本发明第一方面一种可选的实施实施方式中,所述将所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌包括:
将所述第一Token ID写入所述JWT有效载荷的所述jti属性中,并根据预先设置配置好所述JWT有效载荷中的其他属性和JWT头部;JWT身份安全令牌的组成包括JWT头部(Header)、JWT有效载荷(Plyload)和签名哈希(Signature)三部分组成,在本发明中,JWT有效载荷(Plyload)中的jti属性配置为第一Token ID,其余部分则都按照预设设置配置,JWT有效载荷(Plyload)中的其余部分包括"iss":"发行人","exp":"到期时间","sub":"主题","aud":"用户","nbf":"在此之前不可用"和"iat":"发布时间",JWT头部(Header)包括两个参数"alg"和"typ",alg属性表示签名使用的算法,typ属性表示令牌的类型。
对配置好的所述JWT头部和所述JWT有效载荷分别进行base64编码并通过预设的分隔号连接起来;在本发明中,所述JWT头部编码得到JWT头部编码数据,所述JWT有效载荷编码得到JWT有效载荷编码数据,所述预设的分隔号为英文的“.”号;举例来说,在该步骤中,对JWT头部进行base64编码获得了eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9,对JWT有效载荷base64编码获得了eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9,通过分隔号“.”连接起来就是eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9。
通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希;在本发明中,签名哈希是对base64编码后的JWT头部和JWT有效载荷两部分的编码数据进行签名,通过JWT头部中指定的签名算法生成哈希,以确保数据不会被篡改;在该步骤中就是对上步获得的eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9进行数字签名,获得BCwUy3jnUQ_E6TqCayc7rCHkx-vxxdagUwPOWqwYCFc。
通过所述分隔号将所述签名哈希连接在所述JWT有效载荷编码数据之后,获得所述JWT身份安全令牌。在该步骤中,最终得到的JWT令牌就为eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9.BCwUy3jnUQ_E6TqCayc7rCHkx-vxxdagUwPOWqwYCFc。
在本发明第一方面一种可选的实施实施方式中,所述解析所述JWT身份安全令牌获得所述第一Token ID包括:
通过所述JWT身份安全令牌中的所述签名哈希校验所述JWT身份安全令牌中的所述JWT头部编码数据和所述JWT有效载荷编码数据是否被篡改;在本发明中,先从JWT身份安全令牌中取出JWT头部编码数据,Base64解码获得签名算法,之后在获取通过分隔号连接的JWT头部编码数据和JWT有效载荷编码数据,运用这个签名算法获得签名哈希,将获得的签名哈希与JWT身份安全令牌中的签名哈希进行对比。
若所述JWT头部编码数据和所述JWT有效载荷编码数据未被篡改;在本发明中,如果上步获得的签名哈希与JWT身份安全令牌中的签名哈希对比一致,则代表数据未发生篡改,可以执行下一步骤,若上步获得的签名哈希与JWT身份安全令牌中的签名哈希对比不一致,则代表数据未发生篡改,则停止执行后续步骤;
对所述JWT有效载荷编码数据进行base64解码,获得所述JWT有效载荷;在确定数据未发生篡改之后,接着就是要从JWT有效载荷编码数据获取第一Token ID,获取之前需要先对JWT有效载荷编码数据进行base64解码;
从所述JWT有效载荷的jti属性中获得所述第一Token ID。在本发明中,在JWT有效载荷编码数据进行base64解码之后,通过查找“jti”字符串的方式从“jti”字符串后面取出第一Token ID的值;
在本发明第一方面一种可选的实施实施方式中,所述利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID包括:
从所述业务请求的用户账号数据中获取得到第二用户ID;
从所述业务请求的前端运行环境数据中获取得到第二用户IP和第二浏览器环境数据;
获取预设的所述字符串;在本发明中,所述字符串与生成第二Token ID时使用的字符串完全相同;
将所述第二用户ID、所述第二用户IP、所述第二浏览器环境数据和所述字符串依次拼接后通过预设的所述MD5信息摘要算法生成所述第二Token ID。在本发明中,生成第二Token ID的目的就是用于后续判断发出业务请求的前端所使用的用户账号和登录环境是否与发出登录请求的前端的用户账号和登录环境是否相同,如果相同,则确认为同一用户,则可以执行获取业务数据的逻辑步骤;
在本发明第一方面一种可选的实施实施方式中,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID之前包括:
从所述登录请求中解析得到用户账号数据;在本发明中,在接收到前端发送的登录请求之后,首先会对登录请求中用户名(用户ID)和登录密码进行验证;
对所述用户账号数据进行验证;在该步骤中,就是验证用户账号数据中的用户名(用户ID)和登录密码在后端数据库中是否存在,如果存在则代表已经注册过了,是注册用户;
当所述用户账号数据验证通过时,再从所述登录请求中解析得到前端运行环境数据。在本发明中,如果用户账号数据验证不通过,则后端就不会执行获取前端运行环境数据的步骤,更不会执行将用户账号数据和前端运行环境数据生成第一Token ID的步骤;
在本发明第一方面一种可选的实施实施方式中,所述签名算法为SHA256算法,所述通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希包括:
获取预存的公钥;在本发明中,签名算法使用的是对称加密算法,即丢JWT头部编码数据和JWT有效载荷编码数据的加密和解密均使用相同的秘钥(公钥),这个公钥预先存储在了后端的数据库中;
利用所述公钥并基于SHA256算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名运算,获得所述签名哈希。
参见图2,本发明第二方面提供了一种数据交互装置,用于服务器,所述数据交互装置包括:
登录请求接收模块10,用于接收前端发送的登录请求;
第一Token ID生成模块20,用于利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;
令牌生成模块30,用于以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;
令牌返回模块40,用于将所述JWT身份安全令牌返回给所述前端;
业务请求接收模块50,用于接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;
令牌解析模块60,用于解析所述JWT身份安全令牌获得所述第一Token ID;
第二Token ID生成模块70,用于利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;
标识比对模块80,用于比对所述第一Token ID和所述第二Token ID;
请求执行模块90,用于若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;
数据返回模块100,用于将所述业务数据返回给所述前端。
在本发明第二方面一种可选的实施实施方式中,所述第一Token ID生成模块20包括:
第一用户ID获取单元,用于从所述登录请求的用户账号数据中获取得到第一用户ID;
第一用户IP和第一浏览器环境数据获取单元,用于从所述登录请求的前端运行环境数据中获取得到第一用户IP和第一浏览器环境数据;
第一字符串获取单元,用于获取预存的字符串;
第一Token ID生成单元,用于将所述第一用户ID、所述第一用户IP、所述第一浏览器环境数据和所述字符串依次拼接后通过预设的MD5信息摘要算法生成所述第一TokenID。
在本发明第二方面一种可选的实施实施方式中,所述令牌生成模块30包括:
JWT头部和有效载荷构建单元,用于将所述第一Token ID写入所述JWT有效载荷的所述jti属性中,并根据预先设置配置好所述JWT有效载荷中的其他属性和JWT头部;
JWT头部和有效载荷编码连接单元,用于对配置好的所述JWT头部和所述JWT有效载荷分别进行base64编码并通过预设的分隔号连接起来;
JWT头部和有效载荷签名单元,用于通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希;
JWT身份安全令牌拼接单元,用于通过所述分隔号将所述签名哈希连接在所述JWT有效载荷编码数据之后,获得所述JWT身份安全令牌。
在本发明第二方面一种可选的实施实施方式中,所述令牌解析模块60包括:
签名校验单元,用于通过所述JWT身份安全令牌中的所述签名哈希校验所述JWT身份安全令牌中的所述JWT头部编码数据和所述JWT有效载荷编码数据是否被篡改;
JWT有效载荷编码数据解码单元,用于若所述JWT头部编码数据和所述JWT有效载荷编码数据未被篡改,对所述JWT有效载荷编码数据进行base64解码,获得所述JWT有效载荷;
第一Token ID获取单元,用于从所述JWT有效载荷的jti属性中获得所述第一Token ID。
在本发明第二方面一种可选的实施实施方式中,所述第二Token ID生成模块70包括:
第二用户ID获取单元,用于从所述业务请求的用户账号数据中获取得到第二用户ID;
第二用户IP和第二浏览器环境数据获取单元,用于从所述业务请求的前端运行环境数据中获取得到第二用户IP和第二浏览器环境数据;
第二字符串获取单元,用于获取预设的所述字符串;
第二Token ID生成单元,用于将所述第二用户ID、所述第二用户IP、所述第二浏览器环境数据和所述字符串依次拼接后通过预设的所述MD5信息摘要算法生成所述第二Token ID。
在本发明第二方面一种可选的实施实施方式中,所述数据交互装置还包括:
账号数据验证模块,用于从所述登录请求中解析得到用户账号数据;对所述用户账号数据进行验证;
前端运行环境数据获取模块,用于当所述用户账号数据验证通过时,再从所述登录请求中解析得到前端运行环境数据。
在本发明第二方面一种可选的实施实施方式中,所述签名算法为SHA256算法,所述JWT头部和有效载荷签名单元包括:
公钥获取子单元,用于获取预存的公钥;
哈希运算子单元,用于利用所述公钥并基于SHA256算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名运算,获得所述签名哈希。
图3是本发明实施例提供的一种服务器的示意图,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器110(central processing units,CPU)(例如,一个或一个以上处理器)和存储器120,一个或一个以上存储应用程序或数据的存储介质130(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对图片发光特效的生成设备中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在接口自动化测试上执行存储介质中的一系列指令操作。
本发明的服务器还可以包括一个或一个以上电源140,一个或一个以上有线或无线网络接口150,一个或一个以上输入输出接口160,和/或,一个或一个以上操作装置,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图3示出的服务器结构并不构成对本发明服务器的具体限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的前后端数据交互方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种前后端数据交互方法,其特征在于,包括以下步骤:
接收前端发送的登录请求;
利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;
以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;
将所述JWT身份安全令牌返回给所述前端;
接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;
解析所述JWT身份安全令牌获得所述第一Token ID;
利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;
比对所述第一Token ID和所述第二Token ID;
若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;
将所述业务数据返回给所述前端。
2.根据权利要求1所述的前后端数据交互方法,其特征在于,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID包括:
从所述登录请求的用户账号数据中获取得到第一用户ID;
从所述登录请求的前端运行环境数据中获取得到第一用户IP和第一浏览器环境数据;
获取预存的字符串;
将所述第一用户ID、所述第一用户IP、所述第一浏览器环境数据和所述字符串依次拼接后通过预设的MD5信息摘要算法生成所述第一Token ID。
3.根据权利要求1所述的前后端数据交互方法,其特征在于,所述将所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌包括:
将所述第一Token ID写入所述JWT有效载荷的所述jti属性中,并根据预先设置配置好所述JWT有效载荷中的其他属性和JWT头部;
对配置好的所述JWT头部和所述JWT有效载荷分别进行base64编码并通过预设的分隔号连接起来;
通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希;
通过所述分隔号将所述签名哈希连接在所述JWT有效载荷编码数据之后,获得所述JWT身份安全令牌。
4.根据权利要求3所述的前后端数据交互方法,其特征在于,所述解析所述JWT身份安全令牌获得所述第一Token ID包括:
通过所述JWT身份安全令牌中的所述签名哈希校验所述JWT身份安全令牌中的所述JWT头部编码数据和所述JWT有效载荷编码数据是否被篡改;
若所述JWT头部编码数据和所述JWT有效载荷编码数据未被篡改;
对所述JWT有效载荷编码数据进行base64解码,获得所述JWT有效载荷;
从所述JWT有效载荷的jti属性中获得所述第一Token ID。
5.根据权利要求2所述的前后端数据交互方法,其特征在于,所述利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID包括:
从所述业务请求的用户账号数据中获取得到第二用户ID;
从所述业务请求的前端运行环境数据中获取得到第二用户IP和第二浏览器环境数据;
获取预设的所述字符串;
将所述第二用户ID、所述第二用户IP、所述第二浏览器环境数据和所述字符串依次拼接后通过预设的所述MD5信息摘要算法生成所述第二Token ID。
6.根据权利要求1所述的前后端数据交互方法,其特征在于,所述利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID之前包括:
从所述登录请求中解析得到用户账号数据;
对所述用户账号数据进行验证;
当所述用户账号数据验证通过时,再从所述登录请求中解析得到前端运行环境数据。
7.根据权利要求1所述的前后端数据交互方法,其特征在于,所述签名算法为SHA256算法,所述通过所述JWT头部中记载的签名算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名获得签名哈希包括:
获取预存的公钥;
利用所述公钥并基于SHA256算法对连接后的JWT头部编码数据和JWT有效载荷编码数据进行签名运算,获得所述签名哈希。
8.一种数据交互装置,用于服务器,其特征在于,所述数据交互装置包括:
登录请求接收模块,用于接收前端发送的登录请求;
第一Token ID生成模块,用于利用所述登录请求中的用户账号数据和前端运行环境数据生成第一Token ID;
令牌生成模块,用于以所述第一Token ID作为JWT有效载荷中的jti属性生成JWT身份安全令牌;
令牌返回模块,用于将所述JWT身份安全令牌返回给所述前端;
业务请求接收模块,用于接收所述前端发送的业务请求,所述业务请求中携带有所述JWT身份安全令牌;
令牌解析模块,用于解析所述JWT身份安全令牌获得所述第一Token ID;
第二Token ID生成模块,用于利用所述业务请求中的用户账号数据和前端运行环境数据生成第二Token ID;
标识比对模块,用于比对所述第一Token ID和所述第二Token ID;
请求执行模块,用于若所述第一Token ID和所述第二Token ID相同,则执行所述业务请求的业务逻辑获得业务数据;
数据返回模块,用于将所述业务数据返回给所述前端。
9.一种服务器,其特征在于,所述服务器包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述服务器执行如权利要求1-7中任一项所述的前后端数据交互方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的前后端数据交互方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211551871.3A CN116015739A (zh) | 2022-12-05 | 2022-12-05 | 前后端数据交互方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211551871.3A CN116015739A (zh) | 2022-12-05 | 2022-12-05 | 前后端数据交互方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116015739A true CN116015739A (zh) | 2023-04-25 |
Family
ID=86028825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211551871.3A Pending CN116015739A (zh) | 2022-12-05 | 2022-12-05 | 前后端数据交互方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116015739A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116910792A (zh) * | 2023-09-12 | 2023-10-20 | 武汉汉王数据技术有限公司 | 一种人工智能生成内容处理方法、系统、设备及存储介质 |
-
2022
- 2022-12-05 CN CN202211551871.3A patent/CN116015739A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116910792A (zh) * | 2023-09-12 | 2023-10-20 | 武汉汉王数据技术有限公司 | 一种人工智能生成内容处理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110493202B (zh) | 登录令牌的生成及验证方法、装置和服务器 | |
US8504820B2 (en) | Method for improving network application security and system thereof | |
CN105025041B (zh) | 文件上传的方法、装置和系统 | |
US8689339B2 (en) | Method, system and apparatus for game data transmission | |
CN105472052B (zh) | 一种跨域服务器的登录方法和系统 | |
US20080196096A1 (en) | Methods for Extending a Security Token Based Identity System | |
WO2021083083A1 (zh) | 一种升级方法、系统、服务器及终端设备 | |
CN107016074B (zh) | 一种网页加载方法及装置 | |
CN109618341A (zh) | 一种数字签名认证方法、系统、装置以及存储介质 | |
CN105099692A (zh) | 安全校验方法、装置、服务器及终端 | |
CN106302453A (zh) | 数据的处理方法、装置及系统 | |
CN103763104B (zh) | 一种动态验证的方法及系统 | |
WO2021052034A1 (zh) | 信息认证方法及其系统、认证模块以及用户终端 | |
CN111553450B (zh) | 二维码生成、验证的方法及装置 | |
CN105162604A (zh) | 一种基于特征图像识别的验证方法、服务器及系统 | |
CN107835160A (zh) | 基于二维码的第三方用户认证方法 | |
KR20190127124A (ko) | 블록체인을 이용한 소스 코드 및 관련 데이터의 무결성 검증 방법 및 장치 | |
CN111031037A (zh) | 用于对象存储服务的鉴权方法、装置及电子设备 | |
CN110071937A (zh) | 基于区块链的登录方法、系统及存储介质 | |
CN116015739A (zh) | 前后端数据交互方法、装置、服务器及存储介质 | |
Vasileios Grammatopoulos et al. | A web tool for analyzing FIDO2/WebAuthn Requests and Responses | |
CN104301285B (zh) | 用于web系统的登录方法 | |
US20230318846A1 (en) | Preventing illegal, malicious and theft of e-signatures while reusing e-signatures from mobile device | |
CN116192445A (zh) | 用户登录验证方法、装置、设备及存储介质 | |
CN110020246A (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 |