浅谈spring之JWT鉴权

1.JWT鉴权是什么?

①针对于浏览器而言

传统方式下,我们登录成功后可以将登录信息存储在session中,然后服务器会将sessionId标识返回给浏览器存储在cookie里,然后浏览器每次访问服务器的时候,都会通过cookie携带sessionId,后端通过sessionId就能取到session中的用户信息了

②针对于app/小程序而言

一个App,它是不支持cookie的;那么这种情况下,服务器如何来完成客户端的身份认定呢?这就需要JWT技术的支持了

JWT(令牌),全称为JSON Web token,是用于对应用程序上的用户进行身份验证的标记。

在身份验证过程中, 当用户使用其凭据成功登录时,将返回JWT(令牌),客户端会将其保存到本地存储中,而后每次请求都会携带此令牌。

2.JWT组成

在这里插入图片描述
完整的token令牌:

eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInRlbGVwaG9uZSI6IjEzNzAwMTM3MDAwIiwicGFzc3dvcmQiOm51bGx9.bK41N48SXyXf4lyccrAVeV-80btL5GtYZy2o5vwCX7A

①header头部

一般由两部分组成,令牌类型(即:JWT)和散列算法(HMAC、RSASSA、RSASSA-PSS等)

eyJhbGciOiJIUzI1NiJ9

base64解码网站进行解码:

{"alg":"HS256"}
②payload载荷

一般里面可以存储自定义的实体的信息

eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsInRlbGVwaG9uZSI6IjEzNzAwMTM3MDAwIiwicGFzc3dvcmQiOm51bGx9

base64解码网站进行解码:

{"id":1,"username":"admin","telephone":"13700137000","password":null}
③signature签名

用于保证消息在传输过程中不会被篡改,由三部分组成

  • header (base64后的)
  • payload (base64后的)
  • secret

这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

注意:secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。

3.JWT流程

token必须要在每次请求时传递给服务端,它应该保存在请求头里!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值