zoukankan      html  css  js  c++  java
  • DRF JWT认证基础

    JWT认证机制 : 用户登录之后, 为了保持用户的登录状态, 使用Json Web Token认证机制

    1. session认证方式:

    基于session的认证方式会出现的问题(为什么不用session认证):

      Session:  每认证一个用户之后, 服务端做一次记录, session都是保存在内存中,随着认证用户的增多,服务端的开销会明显增大。

      CSRF: session是依赖于cookie的, 如果cookie被截获,用户就会很容易受到跨站请求伪造的攻击。

      拓展性: 认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。

    2. JWT token认证机制:

         

    jwt认证流程:  

    • 用户使用用户名和密码来请求服务器进行登录
    • 服务器验证用户的登录信息
    • 服务器通过验证,生成一个token并返回给用户
    • 客户端存储token,并在每次验证请求携带上这个token值
    • 服务端验证token值,并返回数据

        

    3. JWT token数据格式

    JWT token是一个字符串,由3部分组成,用.隔开。如下:

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
    TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
    组成介绍:
    1) 头部(header) :  声明类型,这里是jwt 声明加密的算法 通常直接使用 HMAC SHA256 
        { 'typ': 'JWT', 'alg': 'HS256' }
      然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分.
        eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

    2)载荷(payload) : 载荷就是存放有效数据的地方。这些有效数据主要保存存储的数据和token的有效时间。
        { "username": "smart", "mobile": "13155667788", "email": "smart@163.com", "exp": "<token有效时间>" }
    然后将其进行base64加密,得到JWT的第二部分。
        eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

    3) 签名(signature) : JWT的第三部分是一个签名信息,用来防止JWT token被伪造。
     

    4. JWT认证使用注意点:

    • payload中不要存过于敏感的数据
    • 服务器的签名加密密钥需要保存好
    • 使用https安全网络协议
  • 相关阅读:
    案例详解:MTU不一致导致主机和RAC不断重启
    近千人观看live,晚8点继续安排,2个CPU过高案例+1个文件数据删除案例->Oracle故障分析的方法论+DBA能力提升要领...
    一个模版让报表自动生成,领导:这才是数据分析人该干的事
    如何构造一个 SYN_SENT 状态的连接
    TCP 3次握手原理
    SpringCloud Alibaba微服务番外一
    socket bind 随机端口
    Yii项目Security加密解密类提取
    linux中iptables配置文件及命令详解详解
    linux中iptables配置文件及命令详解详解
  • 原文地址:https://www.cnblogs.com/yqyn-study/p/13409264.html
Copyright © 2011-2022 走看看