JWT(Json网络令牌)与自定义令牌

Dei*_*bys 16 security jwt rest-security

我正在查看问题,但我找不到任何可以解决我怀疑的问题.我发现了有关JWT的大量信息,但在比较JWT在生成自定义令牌和针对REST服务的身份验证请求方面的优势时,并没有太多信息.

使用JWT(Json Web Token)生成自定义生成令牌有什么好处?要生成自定义令牌,我可以使用一些散列策略或一些独特的随机数生成器.

如果我生成自定义令牌,我可以有任何安全问题吗?您会建议使用任何其他身份验证机制吗?

谢谢!

Mvd*_*vdD 12

JWT令牌包含声明,声明是关于主题的声明(例如登录用户).这些语句可以是名称,电子邮件,角色等.JWT令牌经过数字签名,不易受CSRF攻击.

这两个特征确保接收令牌的服务不需要返回发布认证服务器来验证令牌的有效性或获得关于主题的信息.

这增加了使用JWT令牌的系统以显着方式扩展的能力.JWT令牌确实需要安全的传输通道(HTTPS).

这样做的缺点是令牌不能被撤销(因为没有中央服务器守护这些令牌).这就是为什么令牌通常寿命很短的原因.

另一方面,持有会话ID的令牌确实需要联系身份验证服务器以验证令牌(通常是数据库查找)并检索有关主题的信息(另一个数据库查找).

HMAC令牌的验证需要知道用于生成令牌的密钥.通常,接收服务(您的API)需要联系身份验证服务器,因为该服务器是保存密码的位置.

HMAC令牌和会话ID通常存储在cookie中.Cookie不能用于跨域服务调用,需要针对CSRF攻击进行保护.

  • JWT本身不提供针对CSRF和XSS攻击的任何措施.签名是一种防止篡改令牌的措施.令牌即使签名也仍然可以被盗.Stormpath有一篇很好的文章描述了你应该存储JWT令牌的位置以及如何防范CSFR和XSS.https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ (5认同)
  • JWT令牌本身不能防止CSRF,但它们通常用于承载认证方案.承载认证方案不易受CSRF攻击.我阅读了Stormpath文章,但不同意他们的建议.在cookie中存储JWT令牌会使非浏览器客户端更难以使用您的API,并且很难将您的API放在不同的域中. (5认同)
  • 说实话,我仍然没有看到使用JWT令牌优于自定义生成令牌的优势,如果它们是哈希值,我可能很难入侵,我在服务器中有一个数据存储来验证它们是否有效 (3认同)
  • 此外,JWT 令牌未加密,因此存储敏感信息存在问题,因为它驻留在客户端计算机中,然后获取令牌的攻击者可以发现有关用户的更多信息。您会说这不是什么大问题,因为他可以使用该令牌访问服务并可能接收相同的信息 - 但我会说会话令牌比仅签名更好加密 (2认同)