2

我希望使用库 flask-jwt-extended 在我在 docker 中运行的服务之间传播 JWT 令牌,并且我知道如何使用类似于此的东西来做到这一点:

request.post(url, json={"access_token": access_token, "refresh_token": refresh_token)

但根据我的经验,我需要回复才能做到这一点。

我已经有前端创建令牌并保护我的路线。我只想使用该令牌为后端做同样的事情。

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

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

@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

我需要返回该响应吗?

4

1 回答 1

2

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

这是基础知识:

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

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

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

  4. 当后端收到令牌时,它会在将令牌有效负载应用于请求的操作之前使用令牌的公钥身份验证签名和“来源”。

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

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

于 2019-02-11T22:43:40.560 回答