【问题标题】:Django JWT and OAuth authentication and AuthorizationDjango JWT 和 OAuth 身份验证和授权
【发布时间】:2017-07-21 22:43:17
【问题描述】:

目前我正在为我的 django REST API 使用 JWT 身份验证。

但是从 JWT 库中,我无法在过期后刷新令牌。 (5分钟) https://github.com/GetBlimp/django-rest-framework-jwt

所以我需要为刷新令牌集成 OAuth 2.0,为访问令牌集成 JWT 令牌。

如何为我的 REST 框架集成 JWT + OAuth 2.0。或任何样品?

前: https://github.com/GetBlimp/django-rest-framework-jwthttps://django-oauth-toolkit.readthedocs.io/en/latest/#

【问题讨论】:

    标签: django oauth-2.0 django-rest-framework jwt


    【解决方案1】:

    我们采取的方法是增加令牌到期时间(假设为 36 小时),然后当达到某个阈值时(例如令牌到期前 12 小时),从服务器。

    为什么是 36 和 12?这里完全是假设的,但用户可能每 1.5 天访问一次网站,并且 12 小时的刷新窗口让他们有时间在我们的网站之外过上生活(这对我来说听起来很疯狂,但那是另一个故事)。选择似乎适合用户行为的时间。尝试找出用户可能会返回您的网站并在刷新窗口上做出明智决定的时间。当然,JWT 也有一个可刷新的时间限制,您可能已经在某些应用程序中看到“在接下来的 30 天内让我登录”,之后用户必须重新进行身份验证。

    安全明智?在阅读了 SO 的一堆答案之后,似乎拥有更长的有效期并不会使您的 JWT 更容易受到攻击。如果您偏执,可以将旧的 JWT 列入黑名单(但仍有时间),但在大多数情况下,通过 HTTPS 就足够了。

    【讨论】:

      【解决方案2】:

      这是我的建议:

      • 您只需要使用 JWT(刷新令牌无需使用 OAuth 2.0)。
      • 如果您想在 5 分钟后刷新令牌,您应该稍微自定义一下您的应用。

      第1步:需要添加一个名为BlackList的表(该表将存储5分钟后过期的所有令牌),

      第 2 步:编写一个脚本,为任何令牌设置 5 分钟后的过期时间,并将该令牌放入 BlackList 表中。

      第三步:那么你需要先覆盖表BlackList中检查token的认证方式;创建一个新的,或者拒绝权限......然后

      【讨论】:

        猜你喜欢
        • 2014-12-27
        • 1970-01-01
        • 2014-11-13
        • 2020-04-14
        • 2016-02-15
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多