从令牌标头中删除“Bearer”而不实施自定义身份验证方案或解析令牌?

kim*_*j39 6 oauth mongoose mongodb oauth-2.0 bearer-token

目前使用 JWT 身份验证模式,其中令牌在模式中具有“Bearer:”。是否可以删除“Bearer”前缀,这样我就不需要将其添加到客户端,只是为了再次在后端解析它?有没有一种方法可以在不实现自定义方案的情况下(因此仍然使用承载方案)并且无需解析“承载:”文本的实际令牌来实现此目的?

现在,代码如下所示:

var token = req.headers.authorization;
var newToken = token.replace("Bearer ", "");
jwt.verify(newToken, jwtSecret, function (err, success) {
 if (err) {
  return res.
          status(401).
          end('Unauthorized, invalidtoken');
 } else {
  return next();
 }
})
Run Code Online (Sandbox Code Playgroud)

理想情况下,它会这样实现:

var token = req.headers.authorization;
jwt.verify(token, jwtSecret, function (err, success) {
 if (err) {
  return res.
          status(401).
          end('Unauthorized, invalidtoken');
} else {
  return next();
}
})
Run Code Online (Sandbox Code Playgroud)

这样可以吗?从 jwt 授权标头中删除“Bearer”有何影响?

谢谢

kim*_*j39 4

在格式化请求标头时,与删除不记名令牌没有程序上的区别。如果您确实选择这样做,则违反了 RFC 和 HTTP 标准。这就像在 GET 响应中发送有效负载并将数据保存到数据库中一样。

使用源自 Oauth 设计的不记名令牌,因此请查看此处的标准。