gpt4 book ai didi

node.js - JsonWebTokenError : invalid signature when verifying the jwt token

转载 作者:行者123 更新时间:2023-12-05 03:40:22 24 4
gpt4 key购买 nike

我正在实现一个网络应用程序,其中包含一个聊天机器人,可以提醒用户即将到来的谷歌日历事件。当用户授权时,我已成功生成一个 jwt token ,但是,当我验证 token 时,我收到此错误“JsonWebTokenError:无效签名”。我对这些概念还是陌生的,所以非常感谢任何帮助。

这是我签署 token 的地方:

  let iss = 'GoogleCalender'
let sub = 'example@gmail.com'
let aud = 'xxxxxxxxxxxxxx'
let exp = '24h'

let sighOptions = {
issuer: iss,
subject: sub,
audience: aud,
expiresIn: exp,
algorithm: "RS256"

}

app.get('/landingPage', (req, res) => {
const token = jwt.sign({ user: 'iman' }, privateKey , sighOptions);
res.cookie('token', token,{ httpOnly: true });
res.sendFile(path.join(__dirname, "./landingPage.html"));
});

这是我验证 token 的地方:


let verifyOptions = {
issuer: iss,
subject: sub,
audience: aud,
maxAge: exp,
algorithms: "RS256"

}

function verifyToken(req,res,next){
const baererHeader = req.headers['authorization']
if(typeof baererHeader !== 'undefined'){
const baerer = baererHeader.split(' ')
const baererToken = baerer[1]
req.token = baererToken
next()
}
else{
res.sendStatus(403)
}
}

app.post('/landingPage',verifyToken, express.json(),(req,res)=>{
token = req.token
jwt.verify(token, publicKey, verifyOptions, (err,authData) =>{
const calendar = google.calendar({version: 'v3' , auth:createConnection()});
const agent = new dfff.WebhookClient({
request : req,
response : res
})
if(err) {
console.log(err)
function welcome(agent){
agent.add("Hi, Im helen, Please log in so i can remind you on your upcoming events")
}
}
else{
function welcome(agent){
agent.add("Hi, I'm Rem. Please click on remind me button if you want to be reminded on your upcoming events!")

} )

});

我做错了什么吗??

最佳答案

  1. 您使用一对私钥和公钥很好。使用非对称签名比使用对称签名更好。

  2. 在您的代码中,我可以看到您在 httpOnly cookie 中发送了 JWT token ,但随后在 landingPage 中,您从 Authorization 中读取了它 header 。不确定那应该如何工作。您确定要将正确的 JWT 发送到 /landingPage 端点吗?

  3. 如果您想使用您自己发布的这个 JWT 来访问 Google 日历中的用户数据,那么它将不起作用。要访问此数据,您需要一个由 Google 颁发的访问 token 。查看 Google 的文档,了解如何从他们那里获取访​​问 token ,这将允许您调用日历 API。您仍然可以使用您正在创建的 token 来保护您自己的端点。因此:用户将需要您的 token 才能调用您的端点,然后来自 Google 的 token 将用于调用日历 API。

关于node.js - JsonWebTokenError : invalid signature when verifying the jwt token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68151942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com