我正在寻找有关Google oAuth2 JWT令牌验证流程的文档。在我的用例中,我将从我的客户端发送JWT令牌,服务器代码负责验证JWT令牌。我的后端将负责根据规范验证oAuth2 JWT令牌,因此我需要一个正式的流程来处理需要做的事情,以便验证JWT令牌而不仅仅是使用库。
我正在使用Spring库来实现这一点,但我正在寻找有关如何获取证书以及如果我们调用Google API进行验证而使用它们的信息。
如果我是客户,那么我只需要一个client_id和ApiKey。但在这里我也看到我们确实需要提供证书。如果我错了,请告诉我。
答案 0 :(得分:0)
要验证签名的JWT,您应该查看其标题部分和属性alg
(用于签名的算法)和kid
(签名加密密钥ID)。加载Google OAuth 2发现JSON文档
https://accounts.google.com/.well-known/openid-configuration并阅读其jwks_uri
属性(带加密密钥的网址)。从该URL读取密钥(它是一个JSON文档),找到一个包含use="sig"
(用于签名)和匹配alg
和kid
值的密钥。然后,您可以解密JWT签名以获取JWT哈希值,并将其与计算出的哈希值进行比较。
因此,您不需要将密钥导入密钥库。您可以缓存密钥,但是当缓存中未包含kid
值时,您需要再次读取JWKS文档。谷歌也有可能随着时间的推移删除一些密钥。