有效载荷中的安全JWT

有效载荷中的安全JWT,jwt,json-web-token,Jwt,Json Web Token,我正在开发一个REST API,我对通过JWT进行身份验证的正确方法、令牌有效负载中包含的信息以及最佳做法和最安全的方法有一些疑问: 将mongoDB的ObjectId包含在有效负载令牌中是否安全 { "sub": "507f191e810c19729de861ea", "name": "John Doe", "rol": "admin" } 检查令牌中的“sub”后,如果用户导航到受保护的路由,例如: “api/dashboard /: userId“ 并在reques中进行比

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

将mongoDB的ObjectId包含在有效负载令牌中是否安全

{
  "sub": "507f191e810c19729de861ea",
  "name": "John Doe",
  "rol": "admin"
}
检查令牌中的“sub”后,如果用户导航到受保护的路由,例如:

“api/dashboard /: userId“
并在reques中进行比较,此示例位于Express.js中

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

上述被认为是安全的吗?

子索赔确定了作为联合工作组主体的委托人,预计在发行人(或全球)的背景下是唯一的。发送内部ID并不是一种坏做法,只要您尊重它的唯一性,不要更改,也不要泄露私人数据。(内部十六进制字符串不能被视为私有)


在服务器端,您需要验证令牌的签名以检查真实性以及数据是否未被更改。在此之后,可以使用JWT中嵌入的数据安全地检查对受保护资源的访问,
sub
声明确定了作为JWT主题的主体,并且在发行人(或全球)的上下文中是唯一的。发送内部ID并不是一种坏做法,只要您尊重它的唯一性,不要更改,也不要泄露私人数据。(内部十六进制字符串不能被视为私有)

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