gpt4 book ai didi

security - 使用 JWT 进行应用身份验证和授权

转载 作者:行者123 更新时间:2023-12-03 17:40:45 24 4
gpt4 key购买 nike

我正在浏览 Oauth2 文档并认为它是一种宽容的安全明智的做法,所以我尝试使用一种特殊的方案来实现 JWT token ,如图片中的移动应用程序与 Web API 通信。

注意:我不喜欢 Oauth2 刷新 token 的想法,因为它们可能会被盗并允许并行使用(合法和恶意用户),除非您通过旋转它们来实现盗窃检测(在每个请求时刷新刷新 token )在这种情况下为什么要使用它们?

身份验证流程的工作原理:

  • 使用凭据登录的用户的 jwt 生命周期为 20 分钟。
  • 到期后,jwt 通过点击 db 检查它是否被列入黑名单(重新登录)来刷新,如果没有检查它是否用于生成新 token 。
  • 如果它从未用于刷新,则会被接受并用于发布低级访问 token 。
  • 如果 token 之前使用过,或者客户端+设备+用户与其父级不同,则提供凭据检查(密码或锁屏代码)
  • 如果通过,此检查会发出一个新的一年级 token ,将其所有父级和子级列入 db 的黑名单,就像新的第一个用户登录一样。
  • 如果锁屏失败,用户将看到登录屏幕。

  • 问题是:
  • 可能存在哪些安全漏洞? (我发现了两个用例:被盗的有效访问 token 持续 20 分钟与 Oauth token 相同。这里没有任何损失。被盗的 sleep token :用户未登录 7 天, token 被盗并使用,直到用户再次登录或在持续 3 个月后撤销 token 链 - 我们的政策 - 这种盗窃的可能性很小,因为必须在用户在应用程序上发出的最后一次请求时拦截 token ,比窃取 Oauth2 刷新 token 更轻巧)
  • 在此方案中,攻击者可能会在应用程序上造成哪些用户体验问题?

  • jwt auth flow

    最佳答案

    OAuth2 refresh tokens不打算由移动客户端使用。使用刷新 token 需要客户端凭据,而这些凭据不能安全地存储在移动应用程序中。

    secret 客户端(例如服务器端 Web 应用程序)使用刷新 token 。它们在使用时经常更新(服务器发回新的访问权限和新的刷新 token )。与访问 token 相反,刷新 token 仅发送到授权服务器,而不是资源 (API) 服务器。

    关于您的身份验证流程。第 2 步是 IMO 的薄弱环节。您允许客户端使用过期的 token 来生成新的访问 token 。因此,如果我找到您的手机并访问该设备,它将允许我获得一个新的访问 token 并冒充您。

    您可以强制客户端每 15 分钟刷新一次 token ,但是您必须定义如果应用程序关闭或设备关闭会发生什么?是否可以再次重新验证用户?

    关于security - 使用 JWT 进行应用身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187228/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com