【问题标题】:oAuth2 JWT token validation processoAuth2 JWT 令牌验证过程
【发布时间】:2017-06-20 12:57:38
【问题描述】:

我正在寻找有关 Google oAuth2 JWT 令牌验证过程的文档。在我的用例中,我将从客户端发送 JWT 令牌,服务器代码负责验证 JWT 令牌。我的后端将负责根据规范验证 oAuth2 JWT 令牌,因此我需要一个正式的流程来验证 JWT 令牌,而不仅仅是使用库。

我正在使用 Spring 库来执行此操作,但我正在寻找诸如如何获取证书并在我们调用 Google API 进行验证时使用它们的信息。

如果我是客户,那么我只需要一个 client_id 和 ApiKey。但是在这里我也看到我们确实需要提供证书。如果我错了,请告诉我。

【问题讨论】:

  • 我最感兴趣的是如何在本地导入密钥库文件中的私有证书。

标签: validation oauth-2.0 jwt


【解决方案1】:

要验证已签名的 JWT,您应该查看其标头部分和属性 alg(用于制作签名的算法)和 kid(签名加密密钥 ID)。加载 Google OAuth 2 发现 JSON 文档 https://accounts.google.com/.well-known/openid-configuration 并阅读其 jwks_uri 属性(带有加密密钥的 URL)。从该 URL 读取密钥(它是一个 JSON 文档)并找到一个带有 use="sig"(用于签名)并匹配 algkid 值的密钥。然后你可以解密 JWT 签名得到 JWT 哈希值,并与你计算的哈希值进行比较。

因此您无需将密钥导入您的密钥库。您可以缓存密钥,但是当您获得未包含在缓存中的 kid 值时,您需要再次读取 JWKS 文档。随着时间的推移,Google 也有可能删除一些密钥。

【讨论】:

猜你喜欢
  • 2015-08-27
  • 2020-04-23
  • 2017-08-18
  • 2020-08-20
  • 2019-06-23
  • 2021-02-10
  • 2017-07-27
  • 2019-10-20
  • 2016-01-17
相关资源
最近更新 更多