我可以存储 Apple 的公钥来验证令牌签名吗?

Posted

技术标签:

【中文标题】我可以存储 Apple 的公钥来验证令牌签名吗?【英文标题】:Can I store Apple's public key for verifying token signature? 【发布时间】:2019-11-24 09:10:20 【问题描述】:

为了与 Apple 实现 OAuth,我们拨打电话GET https://appleid.apple.com/auth/keys

(根据https://docs.developer.pv.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature中的文档)

结果如下:


    "kty": "RSA",
    "kid": "1234567890",
    "use": "...",
    "alg": "RS256",
    "n": "...",
    "e": "..."

我可以相信这些信息不会在没有通知的情况下更改吗?还是每次我们需要使用 Apple 的公钥时我都应该提出这个请求?

【问题讨论】:

您应该缓存带有“kid”的密钥以供后续使用,并在您看到 JWT 使用不同的“kid”签名时再次获取新密钥。 【参考方案1】:

它可以改变,但不会那么频繁。 所以你可以缓存它,并用缓存的来验证它。 然后,当您看到无法使用缓存密钥验证的令牌进入时,请更新您的缓存密钥并再次尝试验证令牌。

【讨论】:

以上是关于我可以存储 Apple 的公钥来验证令牌签名吗?的主要内容,如果未能解决你的问题,请参考以下文章

验证 JWT 令牌签名

如何使用公钥在本地验证 keycloak 访问令牌

如何在 Java 中使用令牌和公钥验证 JWT 签名

如何验证 Apple 登录的 Jwt 令牌(后端验证)。如何从 Java 中的模数和指数 (n,e) 生成 RSA 公钥

RSA公私钥和签名、验签过程

数字签名和数字证书