在不实施自定义身份验证方案或解析令牌的情况下从令牌 header 中删除 "Bearer"?
Removing "Bearer" from token header without implementing a custom authentication scheme or parsing the token?
目前正在使用 JWT 身份验证模式,其中令牌具有 "Bearer: in the schema. Is it possible to remove the "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 授权 headers 中删除 "Bearer" 有什么影响?
谢谢
在格式化请求 header 时,删除不记名令牌在编程上没有区别。如果您确实选择这样做,那么您就违反了 RFC 和 HTTP 标准。这就像在 GET 响应中发送有效负载并将数据保存到数据库。
使用源自 Oauth 设计的不记名令牌,因此请查看 here 标准。
目前正在使用 JWT 身份验证模式,其中令牌具有 "Bearer: in the schema. Is it possible to remove the "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 授权 headers 中删除 "Bearer" 有什么影响?
谢谢
在格式化请求 header 时,删除不记名令牌在编程上没有区别。如果您确实选择这样做,那么您就违反了 RFC 和 HTTP 标准。这就像在 GET 响应中发送有效负载并将数据保存到数据库。
使用源自 Oauth 设计的不记名令牌,因此请查看 here 标准。