Открытые ключи Google OpenID Connect

Что именно означает ответ от https://www.googleapis.com/oauth2/v3/certs? Я пытаюсь проверить JWT, который я получил через процесс Google OpenID Connect, используя node-jsonwebtokens, и ключ, используемый для проверки подписи, должен быть одним из этих двух. Однако исходный код предполагает, что node-jsonwebtokens ожидает формат ключа отличается от доступного в ответе:

[
  {
   'kty': 'RSA',
   'alg': 'RS256',
   'use': 'sig',
   'kid': 'e53139984bd36d2c230552441608cc0b5179487a',
   'n': 'w5F_3au2fyRLapW4K1g0zT6hjF-co8hjHJWniH3aBOKP45xuSRYXnPrpBHkXM6jFkVHs2pCFAOg6o0tl65iRCcf3hOAI6VOIXjMCJqxNap0-j_lJ6Bc6TBKgX3XD96iEI92iaxn_UIVZ_SpPrbPVyRmH0P7B6oDkwFpApviJRtQzv1F6uyh9W_sNnEZrCZDcs5lL5Xa_44-EkhVNz8yGZmAz9d04htNU7xElmXKs8fRdospyv380WeaWFoNJpc-3ojgRus26jvPy8Oc-d4M5yqs9mI72-1G0zbGVFI_PfxZRL8YdFAIZLg44zGzL2M7pFmagJ7Aj46LUb3p_n9V1NQ',
   'e': 'AQAB'
  },
  {
   'kty': 'RSA',
   'alg': 'RS256',
   'use': 'sig',
   'kid': 'bc8a31927af20860418f6b2231bbfd7ebcc04665',
   'n': 'ucGr4fFCJYGVUwHYWAtBNclebyhMjALOTUmmAXdMrCIOgT8TxBEn5oXCrszWX7RoC37nFqc1GlMorfII19qMwHdC_iskju3Rh-AuHr29zkDpYIuh4lRW0xJ0Xyo2Iw4PlV9qgqPJLfkmE5V-sr5RxZNe0T1jyYaOGIJ5nF3WbDkgYW4GNHXhv-5tOwWLThJRtH_n6wtYqsBwqAdVX-EVbkyZvYeOzbiNiop7bDM5Td6ER1oCBC4NZjvjdmnOh8-_x6vB449jL5IRAOIIv8NW9dLtQd2DescZOw46HZjWO-zwyhjQeYY87R93yM9yivJdfrjQxydgEs8Ckh03NDATmQ',
   'e': 'AQAB'
  }
]

У него нет классического блока BEGIN PUBLIC KEY, может он закодирован? Нужен ли дополнительный шаг?


person heyarne    schedule 08.07.2015    source источник
comment
связанный вопрос stackoverflow.com/questions /31183318/   -  person Sergey Ponomarev    schedule 19.01.2020


Ответы (1)


Этот код действительно имеет дело с сертификатами/ключами в формате PEM, а не с материалом ключа в формате JSON Web Key (JWK), который публикуется Google по указанному вами URL-адресу.

Однако здесь есть другой URL-адрес, который обслуживает (тот же) ключевой материал в формате PEM: https://www.googleapis.com/oauth2/v1/certs. Вы можете использовать это представление в node-jsonwebtoken.

person Hans Z.    schedule 08.07.2015
comment
Знаете ли вы, почему в версии v3 конечной точки формат PEM был заменен на JWK? Сертификаты PEM, которые мы можем использовать с инструментом openssl, но сертификаты JWK, которые мы должны сначала преобразовать в PEM, и это не так просто сделать. - person Sergey Ponomarev; 19.01.2020