Google OAuth2 API JWS一致性

时间:2014-12-14 22:09:32

标签: google-oauth google-openid openid-connect jwe

Google目前在https://www.googleapis.com/oauth2/v2/certs公开了以下证书值

{
 "keys": [
  {
   "kty": "RSA",
   "alg": "RS256",
   "use": "sig",
   "kid": "90adc60c0f9f503265a5ebc2c404c88e59882083",
   "n": "u_EOLEKRMNuTA_UPh9R-LTQkF1TNGE6XRVbgvh081A5VtKNFe8b2CmoGvgrm_ochjX0robr8LwpOUSHO779yJANgvwuATHJ4SKYHzN2Gr0yBsC7MyL9CI_eXik4RGiNlEU6mgoy7GGnLtY5-A6OPo-I-4HEttP81LJrmSYh6Y2k=",
   "e": "AQAB"
  },
  {
   "kty": "RSA",
   "alg": "RS256",
   "use": "sig",
   "kid": "5886590f72b8e40668c55fa366c19efb2a22d635",
   "n": "x9mePRk3StM-Tg32S_E8OyBYD8uIHhPPa6U8jkHbpnRf2jEImk1ndIwIoJQCrHl1IsKpY1j81fyQKul0u1Frvb-LFGFVY3L7zSR4hnwzuU_05JtKZRfK-87Kj8JVMJbt34SKRmUitPH4QA23b6g-ORUMYjqWgNWufV6OPy8GYNE=",
   "e": "AQAB"
  }
 ]
}

我正在尝试使用oicjwkest访问Google API,并收到错误

DeSerializationNotPossible: Not base64url encoded

出现此问题是因为两个键的n参数都以=字符结尾。根据{{​​3}},它们应根据JSON Web Algorighms draft进行Base64URL编码,Base64URL根据JSON Web Signature draft删除=个字符。

我正在使用的Python库中是否存在此错误,或者这确实是Google不符合规范?如果是后者:我在哪里报告?

1 个答案:

答案 0 :(得分:0)

对于使用常规base64而不是base64url,Google不符合(现在的RFC)JWAJWS这是正确的。但是,我相信他们已经意识到这个问题,并使用新版本的JWKS端点修复了它:https://www.googleapis.com/oauth2/v3/certs,它具有与v2相同的密钥,但按照规范进行了正确编码。您应该能够使用您正在使用的库来使用v3端点。