python中jwt的使用

JWT(Json Web Token)是一种基于token的认证方法,由header、payload和signature三部分组成。JWT原理是服务端签发后,客户端携带token进行后续请求以验证身份。签名算法包括对称加密HMAC(HS256/HS384/HS512)、非对称加密RSASSA(RS256/RS384/RS512)和ECDSA(ES256/ES384/ES512)。JWT适用于无状态认证,适用于多端分离和API接口交互。其优点是简洁、紧凑、自包含,但不保存会话状态,且存在安全性问题。在Python中,可以使用相关库实现JWT的生成与验证。
摘要由CSDN通过智能技术生成
JWT是什么?
  • JWT是json web token的缩写,一种基于token的json格式web认证方法,说白了就是一个很长的字符串
JWT原理是什么?
  • 基本的原理是,第一次认证通过用户名密码,服务端签发一个json格式的token。后续客户端的请求都携带这个token,服务端仅需要解析这个token,来判别客户端的身份和合法性
JWT的作用和特点
  • 由于http协议是无状态的,所以客户端每次访问都是新的请求。这样每次请求都需要验证身份,传统方式是用session+cookie来记录/传输用户信息,而JWT就是更安全方便的方式。它的特点就是简洁,紧凑和自包含,而且不占空间,传输速度快,而且有利于多端分离,接口的交互等等
  • JWT的主要作用在于:可附带用户信息,后端直接通过JWT获取相关信息。 使用本地保存,通过HTTP Header中的Authorization位提交验证
JWT的组成
  • 一个通常你看到的jwt,由以下三部分组成,它们分别是:
  • 1.header:主要声明了JWT的签名算法;是一个描述JWT元数据的JSON对象
{
    "alg": "HS256",  alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256)
    "typ": "JWT"  typ属性表示令牌的类型,JWT令牌统一写为JWT
}
  • 2.payload:主要承载了各种声明并传递明文数据;是存放有效信息的地方。
{
  "iss": "http://shaobaobaoer.cn",  iss: JWT的签发者,是否使用是可选的
  "aud": "http://shaobaobaoer.cn/webtest/jwt_auth/",  aud: 接收该JWT的一方,是否使用是可选的
  "jti": "4f1g23a12aa",  jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击
  "iat": 1534070547,  iat(issued at): 在什么时候签发的(UNIX时间),是否使用是可选的
  "nbf": 1534070607,  nbf (Not Before):如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟;,是否使用是可选的
  "exp": 1534074147,  exp(expires): 什么时候过期,这里是一个Unix时间戳,是否使用是可选的
  "uid": 1,  
  "data": {
    "uname": "shaobao",
    "uEmail": "shaobaobaoer@126.com",
    "uID": "0xA0",
    "uGroup": "guest"
  }
}
  • 3.signture:拥有该部分的JWT被称为JWS,也就是签了名的JWS;没有该部分的JWT被称为nonsecure JWT 也就是不安全的JWT,此时header中声明的签名算法为none。三个部分用.分割。形如 xxxxx.yyyyy.zzzzz的样式。例如:
eyJhbGciOiJIUzUxMiIsImlhdCI6MTU4NTc5MTM2MCwiZXhwIjoxNTg1NzkxNjYwfQ.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInVzZXJfcGFzc3dkIjoiMTIzNDU2Iiwi
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雪夜独酌

你的鼓励将是我创作的不竭动力

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

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

打赏作者

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

抵扣说明:

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

余额充值