我是使用JWT和flask-jwt的新手。我在我的项目中实现了flast-jwt。即使在我更改了用户密码之后,从flask-jwt收到的访问令牌也没有过期。那么如何防止旧的flask-jwt令牌的使用呢?
发布于 2015-11-30 23:01:16
这是使用无状态JWT令牌的缺点--您不能显式地撤销它们。
相应的pro是,您不必联系外部服务来验证它们。
发布于 2015-12-09 14:23:28
我们可以通过将所有令牌存储在数据库中来构建额外的安全层。在验证令牌时,我们可以使用此数据库表检查此令牌是否由我们的服务器本身生成。此外,我们还可以在用户重置其密码时撤销令牌,只需从DB中删除令牌即可。
发布于 2016-12-01 18:51:47
请务必记住,(无状态) JWT令牌只有在过期或用于对其签名的共享密钥发生更改时才会失效。
因此,基本上,选择是:
根据@savad-kp的建议,
使用C10或其他自定义变体:H211F212
...您可以选择将一些访问令牌标记为新的,将其他的标记为非新的,并使用fresh_jwt_required装饰器仅允许新的令牌访问某些端点。
这对于允许新令牌做一些关键的事情(可能更改密码,或者完成在线购买)很有用,但拒绝非新令牌的这些功能(直到它们重新验证并获得新的新令牌)。新的令牌可以带来更安全的站点,而不会通过让用户一直重新进行身份验证来创建糟糕的用户体验。
我还建议使用flask-jwt-extended插件,而不是flask-jwt插件。它支持一些开箱即用的常见模式(刷新令牌、令牌新鲜度),以及使用数据库的黑名单和令牌撤销。
https://stackoverflow.com/questions/33995381
复制相似问题