Создайте токен JWT в Keycloak и получите открытый ключ для проверки токена JWT на сторонней платформе.

Для внутреннего сервера существует конечная точка, которая выдает ответ JSON при проверке связи и защищена прокси-сервером Apigee Edge. В настоящее время эта конечная точка не имеет защиты, и мы хотим реализовать аутентификацию токена только на носитель для всех клиентов, выполняющих запрос. Все клиенты, выполняющие запросы к API, будут отправлять этот токен JWT в носителе авторизации, а Apigee Edge будет использоваться для проверки токена JWT.

Как использовать Keycloak для создания этого токена JWT?

Кроме того, Apigee нужен открытый ключ источника токена JWT (сервер, подписавший токен JWT, в данном случае, я полагаю, это Keycloak). Итак, мое второе сомнение заключается в том, что пока я использую Keycloak для генерации токена JWT, как получить открытый ключ, с помощью которого сервер будет проверять, действителен ли токен?


person Amit Yadav    schedule 26.02.2019    source источник


Ответы (1)


Это выяснилось с помощью этого носителя. статья. Все шаги, которые я упомянул ниже, имеют подробное описание в статье (см. Шаги с 1 по 9 для части токена, другие шаги связаны с приложением Spring Boot), но я хотел бы дать обзор тех, которые касаются моего вопроса.

Создание токена JWT с помощью KeyCloak

  1. Установите и запустите сервер KeyCloak и перейдите к конечной точке (например, http://localhost:8080/auth). Войдите в систему с начальным логином и паролем администратора (имя пользователя = admin, пароль = admin).
  2. Создайте область и клиента с openid-connect в качестве Client Protocol.
  3. Создайте пользователей, роли и сопоставьте роль клиента с пользователем.
  4. Предполагая, что сервер находится на localhost, посещение http://localhost:8080/auth/realms/dev/.well-known/openid-configuration предоставляет подробную информацию обо всех конечных точках безопасности.
  5. http://localhost:8080/auth/realms/dev/protocol/openid-connect/token, отправивший POST-запрос с действительными данными на этот URL-адрес, дает JWTtoken с.

Получение открытого ключа сервера KeyCloak

  • Переход к Realm Settings и щелчок по Public key с открытым ключом сервера для этой области. Для лучшего понимания см. это изображение.
  • Добавьте -----BEGIN PUBLIC KEY----- и добавьте -----END PUBLIC KEY----- к этому скопированному открытому ключу, чтобы использовать его где угодно для проверки JWTtoken. Ваш открытый ключ должен наконец выглядеть примерно так:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUE5L/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----

Проверка токена на сторонней платформе

  • jwt.io - отличный веб-сайт для проверки токенов JWT. Все, что нам нужно сделать, это вставить токен и открытый ключ. Прочтите введение на веб-сайт здесь, чтобы узнать больше о проверке токенов.
person Amit Yadav    schedule 05.03.2019
comment
Если вам нужен открытый ключ динамически, вы можете получить его по адресу http (s): // ‹hostname› / auth / realms / ‹имя области› - person rooch84; 06.02.2020
comment
Вы знаете, как проверить / подтвердить токен, полученный через Keycloak? - person Tarun Pande; 01.05.2020
comment
@TarunPande вы можете проверить подпись токена локально с помощью открытого ключа, например, в php с openssl_verify(string $data, string $signature, mixed $pub_key_id, mixed $signature_alg=null) - person DARKVIDE; 01.07.2021