31

我正在查看问题,但没有找到任何可以解决我疑问的东西。我发现了有关 JWT 的大量信息,但在比较 JWT 相对于生成自定义令牌与针对 REST 服务的身份验证请求所提供的优势时,并没有太多信息。

与生成自定义生成令牌相比,使用 JWT(Json Web 令牌)有什么优势?要生成自定义令牌,我可以使用一些散列策略或一些唯一的随机数生成器。

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

谢谢!

4

2 回答 2

15

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

这两个特性保证了接收令牌的服务不需要返回发证服务器去验证令牌的有效性或获取有关主题的信息。

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

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

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

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

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

于 2015-07-31T02:19:52.167 回答
2

Django REST 框架文档

JSON Web Token 是一个相当新的标准,可用于基于令牌的身份验证。与内置的 TokenAuthentication 方案不同,JWT 身份验证不需要使用数据库来验证令牌。

于 2015-12-11T08:55:20.147 回答