4

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两个键的参数都以=字符结尾。IIUC,它们应该是根据JSON Web Algorighms Draft 编码的 Base64URL,并且根据 JSON Web Signature draft Base64URL 会去除=字符。

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

4

1 回答 1

0

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

于 2015-10-27T11:37:29.847 回答