【问题标题】:Storing JWT tokens externally in Flask-JWT-Extended在 Flask-JWT-Extended 中外部存储 JWT 令牌
【发布时间】:2020-05-17 11:17:45
【问题描述】:

我有一个使用 Flask-JWT-Extended 在 AWS 中运行的 Flask 应用程序。它正在为 Web 应用程序提供 REST API 调用。

据我了解,令牌是生成并存储在内存中的。我正在考虑将它们存储在 Flask 应用程序外部的数据库或 Redis 中。这样做的原因是为了支持负载均衡:

  • 我认为需要粘性会话来确保可以正确解码和分析客户端令牌的有效性
  • 我正在考虑将应用程序放在 AWS Lambda 中,一旦请求得到处理,这可能会清除 JWT 列表。

我的问题是:

  • 这个方案有什么原因不能正常工作吗?
  • 如果令牌存储在 Flask 应用程序之外,则不清楚如何覆盖本地令牌存储并访问外部存储介质。可以这样做吗?

【问题讨论】:

    标签: flask aws-lambda jwt flask-jwt-extended


    【解决方案1】:

    令牌不存储在内存中。 JWT 的工作原理是创建可以验证为未被篡改的令牌,而无需在服务器上保留任何状态(只需确保 JWT_SECRET_KEY 真正保密)。这是一篇关于无状态身份验证的文章,您可能想阅读:https://blog.imaginea.com/stateless-authentication-using-jwt-2/

    【讨论】:

    • 宾果游戏! get_raw_jwt() 返回 "{'iat': 1580762392, 'nbf': 1580762392, 'jti': 'c1a7447d-2617-4cf3-b936-ca6e1fd24862', 'exp': 1580763292, 'identity': 'paul', 'fresh ': True, 'type': 'access', 'user_claims': {}}" 并表明过期时间(exp)在令牌内。然后可以使用 flask_jwt_extended.verify_jwt_in_request() 来验证有效令牌。
    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2019-02-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2018-12-07
    • 2019-05-06
    相关资源
    最近更新 更多