zoukankan      html  css  js  c++  java
  • python中生成JWK(json web token)


    #
    需要安装pyjwt import jwt import time # 使用 sanic 作为restful api 框架 def create_token(request): grant_type = request.json.get('grant_type') username = request.json['username'] password = request.json['password'] if grant_type == 'password': account = verify_password(username, password) elif grant_type == 'wxapp': account = verify_wxapp(username, password) if not account: return {} payload = { "iss": "gusibi.com", "iat": int(time.time()), "exp": int(time.time()) + 86400 * 7, "aud": "www.gusibi.com", "sub": account['_id'], "username": account['username'], "scopes": ['open'] } token = jwt.encode(payload, 'secret', algorithm='HS256') return True, {'access_token': token, 'account_id': account['_id']} def verify_bearer_token(token): # 如果在生成token的时候使用了aud参数,那么校验的时候也需要添加此参数 payload = jwt.decode(token, 'secret', audience='www.gusibi.com', algorithms=['HS256']) if payload: return True, token return False, token

    JWT特点:

      体积小,因而传输速度快

      传输方式多样,可以通过URL/POST参数/HTTP头部等方式传输

      严格的结构化。它自身(在 payload 中)就包含了所有与用户相关的验证消息,如用户可访问路由、访问有效期等信息,服务器无需再去连接数据库验证信息的有效性,并且 payload 支持为你的应用而定制化。

      支持跨域验证,可以应用于单点登录。

    JWT的组成

      1.头部===类别,加密算法 {'alg':HS256','typ':'JWT'}

      2.载荷(payload) 存放有效信息(标准声明,公共声明,私有声明) 

    // 包括需要传递的用户信息;
    { "iss": "Online JWT Builder",         #iss 该JWT签发者 

    "iat": 1416797419,           sub JWT面向的用户
    "exp": 1448333419,          aud: 接收该JWT的一方,是否使用是可选的
    "aud": "www.gusibi.com",         exp(expires): 什么时候过期,这里是一个Unix时间戳,是否使用是可选的
    "sub": "uid",            iat(issued at): 在什么时候签发的(UNIX时间),是否使用是可选的
    "nickname": "goodspeed",
    "username": "goodspeed",
    "scopes": [ "admin", "user" ]
    }

      3.签证信息 header payload secret 组成

  • 相关阅读:
    master线程的主循环,后台循环,刷新循环,暂停循环
    InnoDB的后台线程(IO线程,master线程,锁监控线程,错误监控线程)和内存(缓冲池,重做日志缓冲池,额外内存池)
    MySQL的连接方式
    编写高质量的 Java 代码
    TProfiler
    Copy-On-Write容器
    G1 垃圾收集器
    JAVA 虚拟机钩子
    Future和Promise
    算法笔记_134:字符串编辑距离(Java)
  • 原文地址:https://www.cnblogs.com/qlshao/p/11046406.html
Copyright © 2011-2022 走看看