JWT签名和编码:过度杀伤或好主意

时间:2017-01-07 01:52:52

标签: javascript node.js authentication jwt

上下文:我通过jwt使用localStorage验证node.js应用程序。

在阅读了很多关于此问题的意见后,我很困惑。 我有一个使用以下代码登录用户的实现:

this

这有点简化。但是,我想知道编码是否真的有必要。我应该这样做吗?

var payload = jwts.encode({id: user.id}, jwtOptions.secretOrKey);
var token = jwt.sign(payload, jwtOptions.secretOrKey);

我在有效负载中没有过于敏感的数据,但我会添加可以被看到和利用的声明(用户的计算机遭到入侵,而localStorage会显示他们是' admin& #39;用户)。它不是电子商务网站,但我希望它在上述(可能不太可能)的情况下是安全的。

否定的是它会使令牌变大(大约增加30%),因此这会影响性能。考虑到人们现在拥有的带宽,额外的几个角色真的很重要

1 个答案:

答案 0 :(得分:0)

RFC 7519 Json Web Token不允许您提出的选项。 jWT使用JWS紧凑序列化,每个部分必须base64 url​​ encoded

  

JWT表示为由...分隔的URL安全部分序列      句号('。')字符。 每个部分都包含base64url编码      值。 JWT中的零件数量取决于      使用JWS Compact表示生成的JWS      使用JWE Compact序列化的序列化或JWE

发送没有序列化的JWT意味着您需要处理编码。如果要查看紧凑和扁平序列化https://tools.ietf.org/html/rfc7515#page-19

之间的差异,请查看JWS RFC