如何找出用于验证 JWT 签名的 public 密钥

How to find out which public key to use to verify a JWT signature

我正在尝试使用 Apple 登录。我有一个 id_token,它是一个在 header 中具有 kid 值的 jwt 令牌。当我从 Apple 获取授权密钥时,我看到它 returns 超过 1 个授权密钥。找出可以使用这些密钥中的哪些密钥的有效方法是什么验证 id_token 中的签名,因为我不想遍历每个 public 密钥。循环将导致不必要的签名验证失败。

String[] parts = idToken.split("\."); 
String headerJson = new String(Base64.getUrlDecoder().decode(parts[0]));
System.out.println(headerJson);

这将给出 header 我们可以比较然后验证签名。

Backend – Token verification

  1. 从 identityToken 获取孩子。

[[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding]

  1. 然后匹配 apple server
  2. 给出的孩子