大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
什么是JWT
JSON Web Token(JWT),是一个开放安全的行业标准,用于多个系统之间传递安全可靠的信息.
为什么会有JWT
在很久很久以前…常见的访问模式是这种的。
这个时候因为用户都是通过电脑上的浏览器访问服务端,而由于浏览器有cookie机制,服务端有session机制,所以这个流程是行得通的,伪流程如下
随着乔布斯时代的来临,智能手机,微信小程序等用户终端越来越多,服务端需要同时支持pc端,APP端,微信小程序端等的访问,那么现在的访问模式变成这样了
而对于APP端和小程序端来说,cookie机制就不友好了。那么服务器如何知道用户是否登录呢?这个时候就需要一种其他的方式。它就是JWT。
JWT的原理浅析
乍一看好像只是用这个token串来替换吊了sessionid,其实不然,区别大概有以下几点
- 对应sessionid来说服务端是有保存的,而token服务端是没有保存的。而仅仅是通过算法解析来验证合法性
- 传统的sessionid机制实现过于复杂,且可能是tomcat等容器默认实现了,要改动也是很不方便的。所以用token
JWT原理深入解析
jwt生成的token串如下所示
一般而言由三个小数点分割为三段。
第一段为头部信息,是非加密的,上诉看起来不是明文是因为有做Base64URL转码。通常明文如下
{
"alg": "HS256",
"type": "JWT"
}
指明了token的加密算法等信息
第二段为用户自定义信息,通常你可以在这里放入username等信息,是非加密的,上诉看起来不是明文是因为有做Base64URL转码,所以不宜存储用户的手机号等私密信息。
第三段为签名,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
该部分用以给服务器验证token的合法性。由于签名秘钥只有服务端有,所以别人没法伪造和篡改token.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180809.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...