You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Apple SignIn正确公钥?jwks-client无返回问题咨询

解决Apple Sign In获取JWKS公钥为空的问题

我之前集成Apple Sign In验证令牌的时候也踩过这个坑!你需要使用Apple官方指定的JWKS端点才能正确获取到公钥,具体的URI是:
https://appleid.apple.com/auth/keys

为什么之前获取不到公钥?

Apple的ID验证服务会通过这个官方端点发布用于验证令牌的所有公钥,每个公钥对应唯一的kid(密钥ID)。如果填错了URI,自然拿不到有效的JWKS集合,也就返回空了。

修改后的完整代码示例

const kid = JSON.parse(header).kid;
const jwksClient = require('jwks-client');

// 填入正确的Apple JWKS URI
const client = jwksClient({
  jwksUri: 'https://appleid.apple.com/auth/keys'
});

client.getSigningKey(kid, (err, key) => {
  if (err) {
    console.error('获取签名密钥失败:', err);
    return;
  }
  // 提取PEM格式的公钥
  const signingKey = key.getPublicKey();
  console.log('获取到的公钥:', signingKey);
  // 这里可以用signingKey来验证Apple ID令牌的签名
});

额外提示

  • 记得确保你的kid是从Apple返回的ID令牌的header中正确解析出来的,格式错误的kid也会导致找不到对应公钥。
  • 可以缓存这些公钥,不用每次验证都请求Apple的端点,提升性能同时避免触发限流。

内容的提问来源于stack exchange,提问作者user14412785

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:52:50