正确的JWT认证体系结构和

2024-09-28 05:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个应用程序,它的前端支持iOS和Android,后端由flaskapi和MySQL数据库组成。你知道吗

现在,我们的身份验证使用JWT。除了我不确定我是否完全理解它应该如何工作。你知道吗

我不知道在哪里可以找到JWT的规范,所以当我说JWT时,我只是指使用PyJWT库加密的JSON负载。你知道吗

目前,代币的到期时间是从其创建之日起6个月。 我觉得这是一个相当不安全的设置。你知道吗

从我看到的所有示例来看,jwt的生命周期非常短,然后有某种“刷新令牌”来更新它。你知道吗

但我只知道这些。我对它的理解还不足以用Python编写代码。你知道吗

有人能解释一下这个刷新令牌是什么,它到底做什么,它是如何创建的,等等吗。?你知道吗

更新:

关于JWT的规范,我读到:https://tools.ietf.org/html/rfc7519

它没有提到任何刷新令牌。你知道吗

所以现在我的问题是,我所做的足够安全吗?你知道吗

有一个logoutAPI端点发送令牌并将其添加到黑名单中,这样就没有人可以窃取它了,值得吗?你知道吗


Tags: 规范身份验证数据库json应用程序示例时间mysql
1条回答
网友
1楼 · 发布于 2024-09-28 05:21:59

六个月对于一个JWT来说太高太不安全了。您可能希望将它最多保留几个小时或一天。同时,还需要一个长寿命刷新令牌(RT),您可以使用它来不断获取新的JWT。刷新令牌的功能是维护一个长寿命会话(这样用户可以长时间登录)、检测令牌盗窃(如果每次使用时不断更改RT的话)-因为您提到了盗窃,并使您能够使用短命访问令牌(因为这些令牌最常通过有线公开)。是的,将jwt列入黑名单可能是个好主意,但是如果你让它们保持短暂的寿命,那么为什么要这样做呢?你知道吗

这个话题既庞大又复杂。关于这一点,您可以参考my blog post——它提供了有关所有会话流及其安全性的信息,还提供了一个端到端实现的库。你知道吗

相关问题 更多 >

    热门问题