如何使oauth2服务器生成JWT令牌以避免存储令牌

时间:2019-06-07 18:19:21

标签: python jwt authlib

我正在使用authlib开发身份验证服务器。

默认Bearer令牌创建是存储在数据库中的随机字符串。

我想要的是生成一个JWT,并且不将其存储在数据库中。

我正在使用OAUTH2_ACCESS_TOKEN_GENERATOR选项生成令牌:

from datetime import datetime, timedelta
from authlib.jose import jwt

def gen_token(*args, **kwargs):
    key_location = '/path/to/key/id_rsa'

    header = {'alg': 'RS256'}
    payload = {
        'iat': datetime.utcnow(),
        'exp': datetime.utcnow() + timedelta(seconds=3600)
    }
    t = jwt.encode(header, payload, open(key_location, 'r').read())
    return t

如何避免使用client_credentials授予来存储生成的令牌?

1 个答案:

答案 0 :(得分:0)

您可以通过传递“不执行任何操作” save_token函数来避免保存令牌。

https://docs.authlib.org/en/latest/flask/2/authorization-server.html#server

def save_token(token, request):
    pass

server = AuthorizationServer(..., save_token=save_token)