py jwt.md
参考: 理解JWT(JSON Web Token)认证及python实践
例子
import jwt
import time
payload = {
"iss": "gusibi.com",
"iat": int(time.time()),
"exp": int(time.time()) + 86400 * 7,
"aud": "xx",
"scopes": ['open'],
"aa": "cc",
'name': "name"
}
token = jwt.encode(payload, 'secret', algorithm='HS256')
print(token)
payload = jwt.decode(token, 'secret', audience='xx', algorithms=['HS256'])
payload = jwt.decode(token, verify=False) # 不验证信息
print(payload)
'''
dic 有官方指定的key,程序在解密的时候会根据key的Value判断是否合法。这些key有
“exp”: 过期时间
“nbf”: 表示当前时间在nbf里的时间之前,则Token不被接受
“iss”: token签发者
“aud”: 接收者
“iat”: 发行时间
exp
exp指过期时间,在生成token时,可以设置该token的有效时间,如果我们设置1天过期,1天后我们再解析此token会抛出
jwt.exceptions.ExpiredSignatureError: Signature has expired
nbf
nbf类似于token的 lat ,它指的是该token的生效时间,如果使用但是没到生效时间则抛出
jwt.exceptions.ImmatureSignatureError: The token is not yet valid (nbf)
iss
iss指的是该token的签发者,我们可以给他一个字符串。
注意,iss 在接收时如果不检验也没有问题,如果我们接收时需要检验但是又签名不一致,则会抛出
jwt.exceptions.InvalidIssuerError: Invalid issuer
aud
aud指定了接收者,接收者在接收时必须提供与token要求的一致的接收者(字符串),如果没写接收者或者接收者不一致会抛出
jwt.exceptions.InvalidAudienceError: Invalid audience
iat
iat指的是token的开始时间,如果当前时间在开始时间之前则抛出
jwt.exceptions.InvalidIssuedAtError: Issued At claim (iat) cannot be in the future.
'''
仅供参考