Node.js 如何从jwks rsa的getSigningKey函数中获取公钥
我尝试了两个nodejs库“jwks-rsa”和“jwks-client”,以获取用于验证苹果登录的公钥。但是它在getPublicKey中的给定错误不是一个函数。 然后我控制台getSigningKey返回的键给了我-1。 我不知道为什么会这样Node.js 如何从jwks rsa的getSigningKey函数中获取公钥,node.js,Node.js,我尝试了两个nodejs库“jwks-rsa”和“jwks-client”,以获取用于验证苹果登录的公钥。但是它在getPublicKey中的给定错误不是一个函数。 然后我控制台getSigningKey返回的键给了我-1。 我不知道为什么会这样 const header = token.split("."); const jwtHead = Buffer.from(header[0], "base64").toString();
const header = token.split(".");
const jwtHead = Buffer.from(header[0], "base64").toString();
const kid = JSON.parse(jwtHead).kid;
const jwksClient = require('jwks-client');
const client = jwksClient({
strictSsl: true, // Default value
jwksUri: process.env.APPLE_URL
});
client.getSigningKey(kid, (err, key) => {
console.log(key)
const signingKey = key.publicKey;
console.log(signingKey);
});
对我来说,它的工作原理与预期一样,我已尝试使用您的配置:
const kid = '86D88Kf'; // specify kid explicitly
const client = jwksClient({
strictSsl: true,
jwksUri: 'https://appleid.apple.com/auth/keys'
});
client.getSigningKey(kid, (err, key) => {
console.log(key)
const signingKey = key.publicKey;
console.log(signingKey);
});
我在回复中得到了合法的公钥:
可能您有一些配置错误。您确定
kid
是合法的,并且您的jwksUri
是正确的吗?是的,我完全确定,您可以在jwksUri
键值中找到kid
?或者GetSigningKey调用有任何错误吗?getSigning key返回我-1它没有返回公钥和它返回的其他东西。如果我无法在express中运行此函数,那么当我在serverless中运行它时,我得到的结果与您在此处显示的相同