【问题标题】:Removing "Bearer" from token header without implementing a custom authentication scheme or parsing the token?在不实现自定义身份验证方案或解析令牌的情况下从令牌标头中删除“Bearer”?
【发布时间】:2018-11-10 14:28:54
【问题描述】:

目前正在使用 JWT 身份验证架构,其中令牌在架构中具有“Bearer:”。是否可以删除“Bearer”前缀,这样我就不需要在客户端添加它来解析它再次后端?有没有办法在不实现自定义方案的情况下做到这一点(所以仍然使用 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();
 }
})

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

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

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

谢谢

【问题讨论】:

  • 不,它在tools.ietf.org/html/rfc7235#section-2 之内 作为旁注,您混淆了“标题”和“令牌”。 var token 实际上是一个包含模式和令牌的 HTTP 标头。无需替换,您需要拆分标头,将实际架构与预期的“承载”进行比较,如果不匹配则立即拒绝请求。
  • 您似乎无法删除 Bearer。请参阅之前的提问和精美的回答:stackoverflow.com/a/33281233/1870891 进一步参考:stackoverflow.com/a/47157391/1870891
  • @MarkoBajlovic 您可以删除/省略它。这里的问题是这是否是一个好主意。虽然它遵循最佳实践,但不使用它会有什么影响。
  • 感谢您的帮助

标签: mongodb mongoose oauth oauth-2.0 bearer-token


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多