zoukankan      html  css  js  c++  java
  • 理解JWT(Json Web Token)

      这篇文章写得不错: 理解JWT(JSON Web Token)认证及python实践,这里不做转载,仅摘要如下,有删改,仅做个人学习,感谢原作者。

    常用认证机制

    1)HTTP basic Auth: client和server之间使用username+“:”+password然后以Base64编码,Base64编码可逆,相当于是明码;

    2)OAuth:一个开放网络标准(一个授权框架)即用户要访问服务资源需要提供一个令牌(token):client获得令牌以及用令牌访问资源的过程如下:

    (A)客户端向认证服务器申请令牌。
    (B)认证服务器对客户端进行认证以后发放令牌。
    (C)客户端使用令牌,向资源服务器申请获取资源。
    (D)资源服务器确认令牌无误,同意向客户端开放资源。

    3) JWT : JWT是Auth0提出的通过对JSON进行加密签名来实现授权验证的方案

      编码之后的JWT是一串字符,由两个点分隔成三段(下面为了方便阅读,在点出做了换行):

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
    TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

    第一部分:头部(header)

    json经过Base64加密,解密后内容如下:

    #  包括类别(typ)、加密算法(alg);
    {
      "alg": "HS256",
      "typ": "JWT"
    }

    jwt的头部包含两部分信息:

    • 声明类型,这里是jwt

    • 声明加密的算法 通常直接使用 HMAC SHA256

    第二部分:载荷(payload)

    json经过Base64加密:

    载荷就是存放有效信息的地方。这些有效信息包含三个部分:

    • 标准中注册声明

    • 公共的声名

    • 私有的声明

    公共的声明 :
    公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.不建议添加敏感信息。

    私有的声明 :
    私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息。

    例子如下:

    # 包括需要传递的用户信息;
    { "iss": "Online JWT Builder", 
      "iat": 1416797419, 
      "exp": 1448333419, 
      "aud": "www.gusibi.com", 
      "sub": "uid", 
      "nickname": "goodspeed", 
      "username": "goodspeed", 
      "scopes": [ "admin", "user" ] 
    }
    • iss: 该JWT的签发者,是否使用是可选的;

    • sub: 该JWT所面向的用户,是否使用是可选的;

    • aud: 接收该JWT的一方,是否使用是可选的;

    • exp(expires): 什么时候过期,这里是一个Unix时间戳,是否使用是可选的;

    • iat(issued at): 在什么时候签发的(UNIX时间),是否使用是可选的;

    第三部分:签名(signature)

    将头部和载荷经过Base64编码后的字符通过点拼接,拼接后的字符串使用HS256算法加密,加密时使用一个私有密钥,

    这个密钥只存在服务端,最终得到一个签名。

      三个部分拼接在一起,就是完整的Json Web Token了。python中使用 pyjwt 包来生成token以及校验token

  • 相关阅读:
    lammps温度云图
    MS中石墨烯建模
    把网页上的内容保存为PDF格式
    lammps 计算热导率
    tomcat错误:严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke Exception
    面向接口编程
    ms中使用AC模块建模时候,保持单个分子的键长 键角不发生变化。
    Python读取文件报错
    debug记录
    网络流
  • 原文地址:https://www.cnblogs.com/tlz888/p/8526309.html
Copyright © 2011-2022 走看看