美文网首页
86.JWT(json web token)

86.JWT(json web token)

作者: wo不是黄蓉 | 来源:发表于2022-04-05 21:46 被阅读0次

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

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

    传统的session认证

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

    问题:

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

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

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

    基于token的鉴权机制

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

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

    流程:

    • 用户使用用户名密码来请求服务器

    • 服务器进行验证用户信息

    • 服务器通过验证发送给用户一个token

    • 客户端存储token,并在每次请求时在请求头加上token值

    • 服务端验证token返回结果

    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头部。

    相关文章

      网友评论

          本文标题:86.JWT(json web token)

          本文链接:https://www.haomeiwen.com/subject/xjjlsrtx.html