在服务之间传播JWT令牌

时间:2019-02-11 22:17:39

标签: 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":
        resp = jsonify({'login': True})
        set_access_cookies(resp, request.json["access_token"])
        set_refresh_cookies(resp, request.json["refresh_token"])
        return resp, 200

我需要返回该回复吗?

1 个答案:

答案 0 :(得分:2)

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

这是基本知识:

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

  2. 后端验证凭据,使用“ RSXXX”算法发行令牌,例如。 'RS512'

  3. 前端将令牌传递给您对任何后端服务的所有调用。

  4. 当后端接收到令牌时,它将令牌令牌的公钥身份验证签名和“源”,然后将令牌有效载荷应用于请求的操作。

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

本文提供了一些有关将公钥/私钥对与pyjwt一起使用的有用信息: https://blog.miguelgrinberg.com/post/json-web-tokens-with-public-key-signatures