对于我的项目,我实现了使用承载令牌的OAuth2身份验证框架。JWT访问令牌安全注意事项
从快速搜索来看,JWT令牌看起来像是今天持有者令牌的主流选择。
如果我使用不编码任何信息的“哑”标记,我会将此标记与所有相关参数(标记的用户,发行日期,到期日期等)一起存储在数据库中。
从智威汤逊的文档,我明白,我可以实现此流程避免这种开销:
- 用户提供支持的方法
- 认证服务生成JWT令牌和下面的参数编码为它一个验证:用户ID,使用的验证方法,发行日期,到期日期
- 验证服务加密并签署令牌
- 令牌发送给用户以供后续使用
加密步骤是可取的,因为我不想公布用户ID。
我的理解是,如果我使用上述方法,我可以避免存储访问令牌和用户之间的映射,完全依赖于令牌提供的用户ID信息。
这种方法让我感到困扰的是,看起来我没有选择“撤销”访问令牌。换句话说,即使访问令牌会被破坏,我也无法将其禁用(除非我知道确切的受损令牌,事实并非如此)。
这是一个真正的担忧,或者我只是想念一些事件?如果这种担忧是真实的,我该如何解决它?
你说得对,智威汤逊有效期到期,你不应该存储它。你可以建立一个撤销清单,但通常的做法是让令牌过期并根据需要调整到期期限。请参阅https://stackoverflow.com/questions/37507714/invalidating-client-side-jwt-session – pedrofb