Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在服务之间传播JWT令牌_Python_Flask_Flask Jwt Extended - Fatal编程技术网

Python 在服务之间传播JWT令牌

Python 在服务之间传播JWT令牌,python,flask,flask-jwt-extended,Python,Flask,Flask Jwt Extended,我希望使用库flask JWT extended在docker中运行的服务之间传播JWT令牌,我知道如何使用类似于以下内容的方法来实现这一点: request.post(url, json={"access_token": access_token, "refresh_token": refresh_token) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == "POST":

我希望使用库flask JWT extended在docker中运行的服务之间传播JWT令牌,我知道如何使用类似于以下内容的方法来实现这一点:

request.post(url, json={"access_token": access_token, "refresh_token": refresh_token)
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == "POST":
        resp = jsonify({'login': True})
        set_access_cookies(resp, request.json["access_token"])
        set_refresh_cookies(resp, request.json["refresh_token"])
        return resp, 200
但根据我的经验,我需要回复才能这样做

我已经有了创建代币和保护我的路线的前端。我只想使用该令牌对后端执行同样的操作

我希望能够从我的前端应用程序登录,并在登录时将令牌传播到其他服务。我该如何处理这个问题

我会将post请求发送到一个类似以下内容的函数:

request.post(url, json={"access_token": access_token, "refresh_token": refresh_token)
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == "POST":
        resp = jsonify({'login': True})
        set_access_cookies(resp, request.json["access_token"])
        set_refresh_cookies(resp, request.json["refresh_token"])
        return resp, 200

是否需要返回该响应?

令牌共享应通过签名信任完成。确保您的其他服务“知道”受信任签名者的公钥

以下是基本知识:

  • 前端通过授权api从后端请求令牌

  • 后端验证凭据,使用“RSXXX”算法(例如“RS512”)发出令牌

  • 前端将令牌传递给任何后端服务的所有调用

  • 当后端接收到令牌时,它会在将令牌负载应用于请求的操作之前,使用令牌的公钥标识验证签名和“源”

  • 所有后端服务和前端都应具有一个配置元素,该元素定义用于令牌签名的一个或多个受信任公钥

    本文提供了一些关于在pyjwt中使用公钥/私钥对的有用信息:

    前端是在“创建”令牌还是只是从后端“请求”令牌?@SteveBoyd目前所有与JWT相关的内容都在前端服务中。我基本上有两个Flask应用程序,一个前端,一个后端。一旦我从前端创建/生成令牌,我也希望能够将令牌存储在后端应用程序中。将令牌存储在您的服务中听起来像是滥用令牌。后端服务应在每次调用时接收令牌,并检查签名是否有效,并通过检查公钥是否是来自前端服务的预期密钥来验证签名是否由受信任密钥签名。应该不需要在后端服务上“存储”令牌。@SteveBoyd您知道这方面的例子吗?感谢您花时间回答,这让我重新思考了我的方法。我决定使用来实现auth0。我只需要在他们拥有的基础上添加一点额外的配置,但我得到了我想要的结果。