https://www.googleapis.com/oauth2/v3/certs中的v1,v2和v3之间的区别
我尝试通过Google Sign-in在Android上validation用户,获取帐户名称,通过GoogleAuthUtil.getToken(getApplicationContext(),app,scopes)获取令牌,然后将令牌发送到我的NodeJS后端服务器核实
我发现这个伟大的stackoverflow问题如何解码它,caching密钥ID(KID),所以它不是每次都做一个往返等等(还没有实现这个部分,但有点玩弄它)我唯一的问题是:以下googleapis证书有什么区别:
- www.googleapis.com/oauth2/v1/certs
- www.googleapis.com/oauth2/v2/certs
- www.googleapis.com/oauth2/v3/certs
每个版本的KID是相同的,但内容是明显不同的。 为什么? v2和v3似乎几乎是相同的,除了v2在属性“n”的值的末尾附加“==”
最重要的是,我使用哪个版本?
我认为这些证书被称为JSON Web密钥(JWK)。 我也读过“x5c”这个词是什么意思?
PS:我从我的Android应用程序得到我的nodejs令牌是:
{ "iss": "accounts.google.com", "sub": "SOME_LONG_NUMBER_THAT_I_DONT_KNOW_IF_SHOULD_SHOW", "azp": "SERVER_CLIENT_ID", "email": "ANDROID_USER_EMAIL", "email_verified": "true", "aud": "ANDROID_CLIENT_ID", "iat": "SOME_NUMBER", "exp": "SOME_NUMBER", "alg": "RS256", "kid": "e53139984bd36d2c230552441608cc0b5179487a" }
版本1似乎是证书string的主要ID的基本JSON映射。 我没有任何内幕消息,但是我会推测这是一种简单的“本土化”格式,有人在谷歌上作为一种简单的方式来分发他们的公钥。
如您所知, 版本2和版本 3以JSON Web密钥(JWK)格式分发。 这种格式是在一个正式的规范RFC7517中定义的,它规定了如何构造一个代表encryption密钥的JSON响应。
至于v2和v3之间的区别,看起来v2包含了作为填充的尾部等号,而在v3中,他们只是简单地将其删除。
我也读过“x5c”这个词是什么意思?
在说明书中 ,'x5c'被定义为一个可选参数,用于指定encryption证书列表,这些证书一起形成一个“信任链” ,允许客户端应用程序通过依次validation每个证书并跟随链回来validation密钥到已知的可信根证书 。
最重要的是,我使用哪个版本?
如果可能,我会build议使用最新的版本。 但只要密钥本身是相同的,可能无关紧要。