JSON WEB Token(JWT)
基于 JWT的token 身份认证方案
https://v3u.cn/book/jwt.html
通过json进行加密签名来实现授权验证的方案
JWT 是基于token身份认证的方案,在安全传输的前提下传送基本信息,减轻对外部存储的依赖,减少了分布式组件的依赖,减少了硬件资源的消耗
Browser发送带有用户名密码的POST请求
Server通过后生成 JWT ,把用户信息存放到 JWT
JWT 放到 cookie中
browser 发送带有 jwt cookie 请求
server 验证签名从 jwt 获取用户信息,返回给 browser 响应信息
Jwt 体积小,传输速度快
传输方式 URL POST HTTP头部
机构化,在payload 包含用户验证的相关信息,无需再连接数据库进行验证
跨域验证,单点登录
- 单点登录,SSO(single sign on),在多个应用系统中,用户只需要登陆一次,便可以访问所有相互信任的应用
组成
. 为分隔符分为三部分
头部
包括 类别和加密算法
载荷 pyload
存放有效信息的地方
签名
对头部和载荷的内容进行签名。保证token不被篡改
好处
- 性能,把用户状态分散到了客户端,相比于session,大大减轻了服务器的压力
- 支持单点登录,因为用户的状态已经被传送到了客户端
- 前后端分离
- 兼容性,支持移动设备,跨程序调用
- 可扩展性
- 有签名,可以防止被篡改
缺陷
- 不适合存放大量信息
pip install pyjwt ----> jwt -----> encode()/decode()