oAuth2 JWT令牌验证过程

时间:2017-06-19 20:28:50

标签: validation oauth-2.0 jwt

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

我正在使用Spring库来实现这一点,但我正在寻找有关如何获取证书以及如果我们调用Google API进行验证而使用它们的信息。

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

1 个答案:

答案 0 :(得分:0)

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

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