86.JWT(json web token)

2022-04-05  本文已影响0人  wo不是黄蓉

参考1### JWT(json web token)

适用于分布式站点的单点登录场景。

传统的session认证

服务端为了识别客户端的用户信息的一种凭证。

问题:

服务端需要记录每个用户的认证信息,随着用户的增多,服务端开销增大。

在分布式应用上很难得到扩展。

cookie如果被截获,用户就很容易收到跨站请求伪造的攻击(CSRF:跨站脚本攻击,盗用用户信息发送请求)。

基于token的鉴权机制

每次请求必须带token,相对于session的机制,信息存储在客户端,降低了服务端的压力。

服务端要允许跨域:Access-Control-Allow-Origin: *

流程:

JWT

构成

头部(header:声明类型和加密算法)+荷载(payload:存放有效信息)+签证(signature:加密后的header+加密后的payload+secret)

将头部进行base64加密+荷载进行Base64加密+通过header中声明的加密方式+secret组合加密

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

应用

在请求头里加Authorization,并加上bearer标注。

应用场景:

身份认证,单点登录SSO;信息交换,数据是经过编码的,可以确保发送者没有伪造。

优点

使用json,可跨语言支持;

便于传输,jwt的构成非常简单,字节占用小;

不需要再服务端保存会话信息,易于扩展。

流程

当用户发起请求登录成功后

服务端返给用户一个JWT,用户只需要本地保存该Token和refresh_token。

当用户访问时在请求头加上Authorization头部。

上一篇下一篇

猜你喜欢

热点阅读