JWT

一、全称:Json Web Token。啊

二、原理

  1、三段式组成:头、体、签名(head.payload.sgin)。

  2、三段信息加密前都是json格式字符串。

  2、头和体都一般采用base64可逆算法加密,用于信息的存取。

  3、签名一般采用md5不可逆算法加密,保证了整个token信息的安全性。

  4、头中一般包含,项目信息,签名的加密方式等,相同固定的信息。例如,{"project": "项目1", "type": "md5",}。

  5、体中一般包含,用户唯一标识信息,用户端设备信息,过期时间等,每个用户独特的信息。例如,{"id": "001", "over_time": "60*60*24*14",}。

  6、签名是将,头和体的加密结果加上安全码组合,再整体进行加密。例如,{"head": "xxxxxx", "payload": "yyyyyy", "secret_key": "zzzzzz"}。

三、校验步骤

  1、将token字符串拆成三段。

  2、第一段因为一般是固定的信息,所以通常不做任何处理。

  3、第二段反解出字典格式,从中通过用户唯一标识信息定位登录用户,设备信息确保登录来源可靠,过期时间确保登录时效。

  4、将第一段和第二段字符串加上安全码,再组合,用同一方式加密与第三段字符串对比校验,若通过,则认为该登录用户为合法对象。

四、drf项目的jwt认证流程

  1、当客户端访问登录接口,登录通过后调用token签发算法,得到token信息返回给客户端,客户端自己保存于本地,比如浏览器的cookies中。

  2、校验token信息的逻辑应该写在认证器类中,在需要认证的视图中通过配置了认证器校验执行token认证。

  3、token认证通过后,则会将此用户注入request.user中,后续视图代码中则可以调用到登录用户信息了。

  4、若全局配置了认证器类和权限类,应至少在登录接口禁用。

五、安装JWT:pip install djangorestframework-jwt。

 

你可能感兴趣的:(JWT)