2017-06-19 103 views
1

我正在寻找在谷歌的oauth2 JWT令牌验证过程文档。在我的用例中,我将从客户端发送JWT令牌,并且服务器代码负责验证JWT令牌。我的后端将负责根据规范验证oAuth2 JWT令牌,因此我需要一个正式的流程来处理需要执行的操作,以验证JWT令牌而不仅仅是使用这些库。的oauth2 JWT令牌验证过程

我使用Spring库要做到这一点,但我期待像如何获得证书,如果我们正在呼吁谷歌API进行验证使用它们的信息。

如果我是客户端,那么我需要的仅仅是一个CLIENT_ID和ApiKey。但在这里我也看到,我们确实需要提供证书。请让我知道如果我错了。

+0

我主要是想知道如何导入专用证书密钥库中的本地文件。 – Irfan

回答

0

为了验证一个签署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也可能会删除一些密钥。

+0

谢谢Jan,这很有帮助。我还发现这个博客非常丰富的https://ncona.com/2015/02/consuming-a-google-id-token-from-a-server/ – Irfan