当前位置: 首页 > 知识库问答 >
问题:

节点。js:JWT with Express验证时出现“无效令牌”错误

谷翰飞
2023-03-14

只是尝试使用Express服务器执行签名和验证JSON Web令牌的基本实现,但“验证”函数不断返回“无效令牌”错误。

当将生成的令牌从/路由粘贴到jwt.io调试器中时,它最初会说“无效签名”,但当我选中“秘密是base 64编码的”复选框时,调试器会验证签名,因此我尝试了base 64编码/解码我的秘密在签名和验证端,但没有任何工作。

我目前正在使用名为“REST Client”的VS代码扩充执行请求,它允许您使用“. rest”或“.超文本传输协议”文件发出请求,我正在手动将“承载[令牌]”传递给授权标头。我也在使用Postman进行测试,并收到了相同的错误。该应用程序正在按预期通过两种方法获取标头。

const express = require('express')
const jwt = require('jsonwebtoken')

const app = express()

app.use(express.json())

app.get('/', (req, res) => {
  const user = {
    username: 'test1234',
    email: 'test1234@gmail.com',
    admin: false
  }

  const secret = 'secret'

  jwt.sign(user, secret, (err, token) => {
    req.token = token
    res.send(token)
  })
})

app.get('/verify', (req, res) => {
  // Bearer <token>
  const authHeader = req.headers.authorization
  console.log(authHeader)
  if(authHeader) {
    const token = authHeader.split(' ')[1]
    const secret = 'secret'
    const userData = jwt.verify(token, secret)
    res.send(userData)
  } else {
    return res.send('Please provide a token.')
  }
})

app.listen(3000, () => console.log('Server listening on http://localhost:3000 ...'))

我希望从“/verify”路由返回有效负载(userData),但会得到一个“无效令牌”错误。

更新:问题是我将授权标头的值用引号括起来,例如授权:“Bearer[token]”,而它本不应该用引号括起来,例如授权:Bearer[token]。

共有1个答案

郎喜
2023-03-14

问题是我将授权标头的值包装在引号中,例如。授权:“承载[令牌]”,而它不应该在引号中,例如。授权:承载[令牌]。

 类似资料:
  • 我使用电话身份验证在react native应用程序中使用这个文档,我在一些不同的设备中测试了它。有时电话可以工作,但有时会抛出此错误 firebase phone身份验证错误:无效令牌。在nativeToJSError 我已经浏览了firebase的文档,并试图理解这个错误。下面是我的代码片段:

  • 我有一个使用 Msal 库获取的 Azure AD JWT 令牌,但是当我尝试验证此令牌时出现问题: 客户端:共享点 Web 部件 另一方面,我有一个服务器应用程序(Java),其中验证了访问令牌 验证人: 法典 我的问题是,当我尝试验证此令牌时,我收到了此错误:使用算法验证时,令牌的签名无效:SHA256with RSA 我被困在这个,如果令牌是正确的,为什么我有这个错误? 问候

  • 我在使用jwt.io验证我的azure广告访问令牌时获得无效签名(在手动检查后将转移到scala代码)。 我正在使用 curl 生成访问令牌: 虽然它为我提供了访问令牌,但响应不包含“Id_token”。不知道为什么。 我正在使用 BEGIN 和 END 证书包装 https://login.microsoftonline.com/common/discovery/keys 中的公钥。(如 htt

  • 问题内容: 我需要验证一个Google id_token,其中一个步骤涉及检查令牌签名。 首先,我从以下网址获取证书:https : //www.googleapis.com/oauth2/v2/certs,并从证书中提取模数(n)和指数(e)并生成公钥,然后分解令牌(标题,有效负载和摘要),然后将解码后的内容与Google pKey +摘要一起发送到rsa函数。 我陷入了这个验证错误: 这是代码

  • 我不明白这是怎么了。节点v.16.4.2,NPM v7.18.1 错误是 /Users/Downloads/test2/mongoose.js:41 SyntaxError:对象上的令牌无效或意外。在模块的wrapSafe(节点:internal/modules/cjs/loader:1025:15)处编译函数(节点:vm:352:18)_在对象处编译(节点:internal/modules/cj

  • 我们在应用程序中使用一键式操作电子邮件标记。我们的电子邮件已被列入白名单,我们将发送电子邮件的电子邮件ID(XXX@YYY.com)列入白名单。 当我们尝试验证不记名令牌时,我们得到AppIdentityError:错误的收件人。完整堆栈跟踪: 文件“/app/components/happier_pages/py/lib/oauth2client/util.py”,第142行,位置_wrappe