使用NodeJS验证包含“Bearer:”的JWT标记字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NodeJS验证包含“Bearer:”的JWT标记字符串相关的知识,希望对你有一定的参考价值。
我以推荐形式Authorization: Bearer <token>
发送标题。
看起来,令牌字符串('Bearer: <token>'
)不是令牌,但需要首先删除'Bearer: '
substring以获取令牌字符串本身。
我想知道,如果通常的做法是从代码中手动删除它,如下所示:
const token = authHeaderValue.replace('Bearer: ', '')
在解码和验证之前?
为什么我的自定义应用程序中需要这个'Bearer: '
字符串?
HTTP Bearer
标头中的值Authorization
表示身份验证方案,就像Basic
和Digest
一样。它在RFC 6750中定义。
应用程序可以支持多种身份验证方案,因此始终建议首先检查身份验证方案。
在基于令牌的身份验证中,首先确保Authorization
标头包含Bearer
字符串,后跟空格。如果没有,拒绝请求。如果找到Bearer
后跟一个空格,则提取必须位于空格字符后面的标记。
有关answer身份验证方案的更多详细信息,请参阅此Bearer
。
我用这种技术。
let token = req.headers['x-access-token'] || req.headers['authorization'];
// Express headers are auto converted to lowercase
if (token.startsWith('Bearer ')) {
// Remove Bearer from string
token = token.slice(7, token.length).trimLeft();
}
if (token) {
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.json({
success: false,
message: 'Token is not valid'
});
} else {
req.decoded = decoded;
next();
}
});
在这里,我们将在JWT前剥离任何Bearer字符串。 Slice 7删除了至少7个字符的'Bearer',如果包含额外的空格,trimStart会处理它。
身份验证标头请求具有IETF中定义的格式。
即认证:
类型包括以下内容:Bearer,error_code,error_description。
我们可以通过','字符分隔一次发送几种类型。
承载是一种身份验证访问类型。
参考:https://tools.ietf.org/html/rfc6750#page-14
以上是关于使用NodeJS验证包含“Bearer:”的JWT标记字符串的主要内容,如果未能解决你的问题,请参考以下文章
使用 JWT Bearer 令牌进行身份验证 Swagger
如何使用 OWIN Jwt Bearer Authentication 记录身份验证结果
使用 .NET Core 中的公共安全密钥配置 JWT Bearer 令牌验证
使用 JWT Bearer 进行身份验证不起作用,调试表明问题出在 GetToken() 函数内部
使用 ADFS 的 JWT Bearer 身份验证将 ASP.NET Framework 迁移到 ASP.NET Core 3.1