- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个网络应用程序,其中包含一个聊天机器人,可以提醒用户即将到来的谷歌日历事件。当用户授权时,我已成功生成一个 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!")
} )
});
我做错了什么吗??
最佳答案
您使用一对私钥和公钥很好。使用非对称签名比使用对称签名更好。
在您的代码中,我可以看到您在 httpOnly cookie 中发送了 JWT token ,但随后在 landingPage
中,您从 Authorization
中读取了它 header 。不确定那应该如何工作。您确定要将正确的 JWT 发送到 /landingPage
端点吗?
如果您想使用您自己发布的这个 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/
我正在尝试在后端进行身份验证,以便只有正确的用户才能获得正确的数据。。App.js。为了实现我的目标,我创建了身份验证方法。我必须进入用户模型。关键是每个用户都应该有自己的派单记录。因此。我们得到的所
具有集成 API 的 Azure 静态 Web 应用程序 (SWA)。后端 API 的步骤之一是使用请求 header 中提交的公钥来验证不记名 token : const jwt = require
老实说,我对此完全迷失了。这个项目运行得非常好,我是从我上次工作的 GitHub 推送中运行这个项目的。事情是这样的。我失去了整个后端。不知道怎么回事,也不知道发生了什么。因此,当我从 GitHub
我在我的 Node 应用程序中使用了 jsonwebtoken 进行 token 验证。这里 jwt.sign 工作得很好。但是当jwt.verify给出以下错误 "auth": false, "me
我正在实现一个网络应用程序,其中包含一个聊天机器人,可以提醒用户即将到来的谷歌日历事件。当用户授权时,我已成功生成一个 jwt token ,但是,当我验证 token 时,我收到此错误“JsonWe
我是一名优秀的程序员,十分优秀!