有效载荷中的安全JWT

时间:2017-01-03 18:30:06

标签: jwt json-web-token

我正在开发一个REST API,我对通过JWT进行身份验证的正确方法有什么疑问,在令牌的有效负载中包含哪些信息以及哪些是最佳做法和最安全的:

安全包括有效负载令牌中的mongoDB的ObjectId吗?

{
  "sub": "507f191e810c19729de861ea",
  "name": "John Doe",
  "rol": "admin"
}

如果用户导航到受保护的路线,例如:

,则检查令牌中的“sub”
“api/dashboard /: userId“

并在请求中进行比较,这个例子在Express.js

.get('api/dashboard/:userId', (req, res)=> {
  if(Req.params.uiserID != token.payload.sub) {
     Res.status(401).send({ message: ‘No authorization’})   
 } 
})

以上认为安全吗?

1 个答案:

答案 0 :(得分:0)

sub声明标识了作为JWT主题的主体,并且在发行者(或全局)的上下文中应该是唯一的。发送内部ID并不是一种不好的做法,只要您认为它是唯一的,不要改变并且不要泄露私人数据。 (内部十六进制字符串不能被视为私有)

在服务器端,您需要验证令牌的签名以检查真实性并且数据未被更改。在此之后可以使用JWT中嵌入的数据检查对受保护资源的访问是否安全