JWT::InvalidIssuerError: 颁发者无效。预期的accounts.google.com,收到的https://accounts.google.com
这个错误信息表明在验证 JWT(JSON Web Token)时,发现 token 的颁发者(issuer)与预期的不符。具体来说,预期的颁发者是 accounts.google.com
,但实际收到的颁发者是 https://accounts.google.com
。
这个问题通常是由于以下几种原因之一引起的:
确保你在验证 JWT 时使用的颁发者(issuer)配置正确。例如,在使用 google-auth-library
库进行 Google 身份验证时,你的配置应该类似于:
const { OAuth2Client } = require('google-auth-library');
const client = new OAuth2Client({
clientId: 'YOUR_CLIENT_ID',
issuer: 'accounts.google.com', // 确保这里配置正确
});
有时,URL 中的斜杠可能会导致问题。确保你在配置颁发者时没有多余的斜杠。例如,accounts.google.com
和 https://accounts.google.com
是不同的。
如果你在使用 OAuth 2.0 进行身份验证,确保你的重定向 URI 配置正确,并且在 Google 开发者控制台中注册的重定向 URI 与你的应用程序中使用的 URI 完全匹配。
如果你在服务器端验证 JWT,确保服务器端的配置与客户端一致,并且没有中间件或代理修改了请求头中的颁发者信息。
以下是一个简单的示例,展示如何在 Node.js 中使用 google-auth-library
库验证 JWT:
const { OAuth2Client } = require('google-auth-library');
const client = new OAuth2Client({
clientId: 'YOUR_CLIENT_ID',
issuer: 'accounts.google.com', // 确保这里配置正确
});
async function verifyToken(token) {
try {
const ticket = await client.verifyIdToken({
idToken: token,
audience: 'YOUR_CLIENT_ID', // 确保这里配置正确
});
const payload = ticket.getPayload();
console.log(payload);
} catch (error) {
console.error('Error verifying token:', error);
}
}
// 调用 verifyToken 函数并传入 JWT
verifyToken('YOUR_JWT_TOKEN');
领取专属 10元无门槛券
手把手带您无忧上云