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

时间:2015-07-30 17:54:20

标签: security jwt rest-security

我正在查看问题,但我找不到任何可以解决我怀疑的事情。我发现了有关JWT的大量信息,但在比较JWT可以提供的优势而不是生成自定义令牌以及针对REST服务的身份验证请求时,我发现了很多信息。

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

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

谢谢!

2 个答案:

答案 0 :(得分:11)

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

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

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

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

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

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

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

答案 1 :(得分:1)

来自Django REST framework documentation

  

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