JWT认证流程

1.JWT是什么

  JWT(JSON Web Token)是基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。

2.JWT认证流程

    在前后端分离的项目中:前端将用户的登录信息发送给服务器;服务器接受请求后为用户生成独一无二的认证信息--token,传给客户端浏览器;客户端将token保存在cookie或者storage中;在之后访问客户端都携带这个token请求服务器;服务器验证token的值,如果验证成功则给客户端返回数据。服务器并不保存token。

3.JWT的构成

   JWS是JWT的一种实现,除了JWS外,JWE(JSON Web Encryption)也是JWT的一种实现。JWE的生成过程较为复杂,虽保证了安全性,但是降低了访问效率,JWS实现方式分为三部分:头部(header),载荷(payload),签证(signature)。

头部(header): 声明类型,声明加密的算法

{

    "alg": "HS256", //这里是jwt

    "typ": "JWT"     //通常直接使用 SHA256

}

载荷(payload):标准中注册的声明,公共的声明,私有的声明

{

    "name": "XXX",

    "time": XXX,

    “email”:"xxx@gmail.com"

    //这部分通常会加上token的有效时间

}
签证(signature):

签证由三部分组成,header和payload分别经base64Url(一种在base64上做了一点改变的编码)编码后由'.’连接,服务器生成秘钥(secret),连接之后的字符串在经header中声明的加密方式和秘钥加密,再用'.'和加密前的字符串连接。服务器验证token时只会验证第三部分。

header (base64Url)

.payload (base64Url)

.secret(header (base64Url)+payload (base64Url)) 

4.JWT如何保证安全

  • 1.签证的第三段使用哈希散列的加密方式,不可逆,且秘钥只保存在服务器,较为安全。
  • 2.在payload部分不应放入密码等敏感信息,因为base64Url可以解码。
  • 3.将token的有效期设置的短一点。
  • 4.使用HTTPS协议。
  • 5.与Session cookie方式相比,session是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造(CSRF)的攻击

参考:https://juejin.im/post/5d0dbb7e6fb9a07f0420512d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyx107

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值