服务器到服务器通信应使用哪种api身份验证方法?

服务器到服务器通信应使用哪种api身份验证方法?,api,authentication,flask,authorization,flask-restful,Api,Authentication,Flask,Authorization,Flask Restful,我在flask中有一个webapp,用户可以通过电子邮件和密码登录。连接到同一个数据库,我有一个api,这些用户将通过编程方式使用它。当他们提出请求时,我需要知道是谁提出了请求 我读过关于感知和授权的书,但我不知道什么是适合我的用例的最好方法。我关注的是JWT代币,但代币的过期使我认为在这种情况下它不是最好的 当令牌过期等情况时,服务器应该如何以编程方式登录?有没有一种常见的方法来完成我假装的任务?使用jwt来验证api(我使用) 例如: def login_required(func):

我在flask中有一个webapp,用户可以通过电子邮件和密码登录。连接到同一个数据库,我有一个api,这些用户将通过编程方式使用它。当他们提出请求时,我需要知道是谁提出了请求

我读过关于感知和授权的书,但我不知道什么是适合我的用例的最好方法。我关注的是JWT代币,但代币的过期使我认为在这种情况下它不是最好的

当令牌过期等情况时,服务器应该如何以编程方式登录?有没有一种常见的方法来完成我假装的任务?

使用jwt来验证api(我使用)

例如:

def login_required(func):
    @wraps(func)
    def decorate(*args, **kwargs):
        verify_refresh_token()
        identify = get_jwt_identity()
        expires_time = datetime.fromtimestamp(get_raw_jwt().get('exp'))
        remaining = expires_time - datetime.now()
        # auto refresh token if token expiring soon
        refresh_space = current_app.config['JWT_MIN_REFRESH_SPACE']
       # store the token in requests.g object
        if refresh_space and remaining < refresh_space:
            g.refresh_token = create_refresh_token(identity=identify)
            g.id = identify
        return func(*args, **kwargs)

    return decorate

@login_required
def view_func():
    pass
    # return json
def需要登录(func):
@包装(func)
def装饰(*args,**kwargs):
验证\u刷新\u令牌()
identify=get_jwt_identity()
expires\u time=datetime.fromtimestamp(get\u raw\u jwt().get('exp'))
剩余=过期时间-datetime.now()
#如果令牌即将到期,则自动刷新令牌
刷新空间=当前的应用程序配置['JWT\u MIN\u刷新空间']
#将令牌存储在requests.g对象中
如果刷新空间和剩余<刷新空间:
g、 刷新令牌=创建刷新令牌(标识=标识)
g、 id=识别
返回函数(*args,**kwargs)
返修
@需要登录
def view_func():
通过
#返回json
当令牌到期时,func将自动刷新令牌,您可以在requests.g对象中获取新令牌,然后返回给用户


就安全性而言,在第一个令牌中设置一个非常大的过期时间是否更安全?如果代币被盗,他们可以继续获取新代币并保持登录状态?这可能会帮助您: