Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как декодировать ключи из Keycloak openid-connect cert api

Автор вопроса: avianeyОтветов: 2

Я пытаюсь получить ключ от конечной точки сертификатов подключения с открытым идентификатором Keycloak, который позволяет мне проверить токен JWT. API для получения шва ключей для работы:

GET http://localhost:8080/auth/realms/my-realm/protocol/openid-connect/certs

{
 "keys": [
   {
     "kid": "MfFp7IWWRkFW3Yvhb1eVrtyQQNYqk6BG-6HZFpl_JxI",
     "kty": "RSA",
     "alg": "RS256",
     "use": "sig",
     "n": "qDWXUhNtfuHNh0lm3o-oTnP5S8ENpzsyi-dGrjSeewxV6GNiKTW5INJ4hDQ7ZWkUFfJJhfhQWJofqgN9rUBQgbRxXuUvEkrzXQiT9AT_8r-2XLMwRV3eV_t-WRIJhVWsm9CHS2gzbqbNP8HFoB_ZaEt2FYegQSoAFC1EXMioarQbFs7wFNEs1sn1di2xAjoy0rFrqf_UcYFNPlUhu7FiyhRrnoctAuQepV3B9_YQpFVoiUqa_p5THcDMaUIFXZmGXNftf1zlepbscaeoCqtiWTZLQHNuYKG4haFuJE4t19YhAZkPiqnatOUJv5ummc6i6CD69Mm9xAzYyMQUEvJuFw",
     "e": "AQAB"
   }
 ]
}

а где ключ и как его расшифровать? $.keys[0].n не похож на base64, и я не могу понять, что это такое? ... если кто-нибудь скажет мне, как получить открытый ключ из этой полезной нагрузки, это будет здорово!

keycloakjwtopenid-connectpublic-key

Ответы

Ответ 1 · рейтинг 7 · avianey

Глядя на https://github.com/keycloak/keycloak/blob/master/core/src/main/java/org/keycloak/jose/jwk/JWKParser.java похоже, что возвращенный ключ кодируется pem с использованием:

  • modulus
  • exponent

Посмотрите на упомянутый класс java, чтобы получить открытый ключ на java или https://github.com/tracker1/node-rsa-pem-from-mod-exp, чтобы получить открытый ключ в javascript.

Ответ 2 · Saljack

Тип ключа (или ключей) - JSON Web Key (JWK). Список поддерживаемых библиотек находится на веб-странице OpenID. Я использую jose.4.j для получения ключей от Keycloak.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы