我正在尝试通过Google Sign-in在Android上对用户进行身份验证以获取帐户名称,通过GoogleAuthUtil.getToken(getApplicationContext(),app,scopes)获取令牌,然后将令牌发送到我的NodeJS后端服务器以验证
我found this伟大的stackoverflow问题如何解码它,缓存密钥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 Keys(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"
}
如您所知,versions 2和3以JSON Web Key(JWK)格式分发.此格式在正式规范RFC 7517中定义,该规范明确说明了如何构造表示加密密钥的JSON响应.
至于v2和v3之间的区别,它看起来像v2包含trailing equal signs as padding而在v3中它们只是简单地剥离了它们.
I’ve also read the term ‘x5c’ What is that?
在the specification,’x5c’被定义为一个可选参数,用于指定一起形成“chain of trust”的加密证书列表,允许客户端应用程序通过依次验证每个证书并跟随链回到已知的信任来验证密钥. root certificate.
Most importantly,which version do I use?
如果可能的话,我建议使用最新版本.但只要键本身相同,它可能并不重要.