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 アルゴリズム ドラフトに従って Base64URL エンコードする必要があり、 JSON Web 署名ドラフト=に従って、Base64URL は文字を削除します。

このエラーは私が使用している Python ライブラリにあるのでしょうか、それとも実際に Google が仕様に準拠していないのでしょうか? 後者の場合: どこに報告できますか?

4

1 に答える 1

0

base64url ではなく通常の base64 を使用する点で、Google が (現在の RFC) JWAおよびJWSに準拠していないことは間違いありません。ただし、彼らはすでにこの問題を認識しており、新しいバージョンの JWKS エンドポイントで修正していると思います: https://www.googleapis.com/oauth2/v3/certs。仕様ごとに適切にエンコードされています。使用しているライブラリで v3 エンドポイントを使用できるはずです。

于 2015-10-27T11:37:29.847 に答える