0

我为我的nodejs项目实现了JWT令牌,但对撤销令牌的需求使我切换到引用持票人令牌,以完全控制令牌生存期。根据我的项目要求:引用令牌生成最佳实践

  1. 令牌必须比自我描述的JWT令牌短得多。
  2. 必须有某种方法来确保服务器发出令牌(如JWT中的hs256验证),但由于参考令牌中没有有效负载部分,情况会变得更加复杂。

什么是最佳实践来实现一个安全的,不可能的猜测,引用标记?

回答

0

一个不透明的令牌只是一个ramdom字符串,它在服务器中映射到一个经过验证的用户名。看看https://security.stackexchange.com/questions/19676/token-based-authentication-securing-the-token

这样的令牌是不够好,安全,只要攻击者无法建立以不可忽略的概率,一个“有效令牌”是“令牌是在数据库中的有效令牌发射令牌“。是足够的令牌值具有长度至少16字节和产生与加密的强PRNG

为了减少服务器的存储需求,则令牌可以包含的用户名及发行日期,并用加密HMAC私钥,以便服务器可以验证真实性。

最后的解决方案非常接近JWT。使用JWT,您还可以使用黑名单标记无效令牌,存储到其过期时间并在每个请求中检查它。 (黑名单打破智威汤逊无国籍状态,因为它要求保持国家)