登录时,JWT访问令牌将从服务器发送并保存在RN的AsyncStorage中。React Native + JWT仍然需要刷新令牌?
现在我想要保持登录了5年的用户,直到他们要么:
注销
管理员撤销其令牌
他们登录3台设备,请在其中一台设备上更改密码,这些设备应将其从其他2台设备注销,直到它们再次登录到这些设备上。
失去他们的电话和登录从其它设备从所有设备
它看起来注销像我不得不JWT令牌存储在数据库中(我知道这不是JWT令牌和失败点他们服务的目的是基于我的阅读),但我需要知道用户的令牌,在他们不同的设备上,能够撤销它们。
让我困惑的一件事是读取访问令牌应该是短暂的,例如60分钟,并且刷新令牌长期存在,比如说我的情况是5年。
我不明白的是为什么我们不能仅仅使用访问令牌来使用5年的使用期限(对于每个设备),将它们保存在数据库中的用户名下,以便我们可以识别它们的令牌和撤销他们的基于上述点的令牌?刷新令牌的意义何在?在这种情况下甚至需要刷新令牌?
注:我也读过,我们不能撤销访问令牌,但只能撤销刷新令牌,所以我真的很困惑。我是否必须向RN发送访问令牌和刷新令牌,并且只对授权承载头使用刷新令牌,并仅将刷新令牌保存在数据库中?那么,如果访问令牌不是数据库中的那个,访问令牌的意义何在?
我认为这应该是简单的实现,但我的标准是5年的登录和能够撤销令牌基于上述点。
这种情况的正确解决方案是什么?
非常感谢您提供丰富翔实的答案。我认为替代解决方案比原来的要好得多:)你有什么建议采取额外的安全措施来防止滥用访问令牌? – Wonka
确保您加密并存储令牌,使其无法通过任何其他应用访问,即使存储可访问;永远不会在url中发送令牌,例如,制作websocket请求 - https://example.com/websocket?令牌='应该严格避免 –
再次谢谢你:) – Wonka