【发布时间】: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