Python JWT 认证使用

文章介绍了Jsonwebtoken(JWT)的概念,它是一种用于网络应用间传递声明的标准,常用于单点登录。在Python中,使用pyjwt库创建和验证JWT,包含设置过期时间、添加自定义数据等。同时,文章提醒注意不应在JWT中存储敏感信息,因为它们可能以明文形式存在。
摘要由CSDN通过智能技术生成

Json web token (JWT), 根据官网的定义,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 

#! /usr/bin/python3
# -*- encoding:utf8 -*-
import jwt #需要安装pip install pyjwt
import datetime, time


def createToken():
    salt = 'abc@1234'

    orgData = {
        "version": "1.0",
        "ts": "20210203123",
        "serialId": "xxxxxx",
        "hash": "xxxxxx",
    }

    payload = {
        'userId': '001',
        'userName': 'zhangsan',
        "aud": "www.xxx.com",
        'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=1)
        # exp 配置token有效时长
    }

    token = jwt.encode(payload=payload, key=salt, algorithm='HS256', headers=orgData)
    print(token)
    return token


def checkToken(token):
    salt = 'abc@1234'
    try:
        # 如果在生成token的时候使用了aud参数,那么校验的时候也需要添加此参数
        data = jwt.decode(token, salt, audience='www.xxx.com', algorithms=['HS256'])
        return data
    except jwt.ExpiredSignatureError:
        return 'Token已失效'
    except jwt.DecodeError:
        return 'Token认证失败'
    except jwt.InvalidTokenError:
        return '无效的Token'


if __name__ == '__main__':
    token = createToken()
    print(checkToken(token))
    time.sleep(60)
    print(checkToken(token))

信息会暴露:由于这里用的是可逆的base64 编码,所以第二部分的数据实际上是明文的。我们应该避免在这里存放不能公开的隐私信息。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值