Використання Keycloak Admin API для аутентифікації клієнта за допомогою JWT

Використання Keycloak Admin API для аутентифікації клієнта за допомогою JWT

4 Березня 2024 в 12:15 83

Keycloak Admin API: як аутентифікувати клієнта, який має JWT від Keycloak? У мене є просте налаштування, де сервер має Keycloak (23.0.1), та кілька додатків. Keycloak та додатки всі знаходяться за оберненим проксі за допомогою Apache, тому Apache (mod_auth_openidc) є клієнтом/RP, а місцевий Keycloak є OP.

Один з додатків потрібно здійснювати запити API до Keycloak, щоб обробляти операції користувача (додавання користувачів, встановлення претензій тощо). Для цього я маю клієнта облікового запису служби на Keycloak, і додаток робить запити Curl до Keycloak, використовуючи секрет клієнта.

Це працює, але я відчуваю, що я зробив це неправильно. Додаток має записати секрет клієнта, тому він вважається небезпечним, і я б радше використовував JWT, якщо це можливо. У такому потоку:

  1. Користувач входить до додатку
  2. Apache аутентифікується з місцевим Keycloak, отримує підписаний JWT і повертає його додатку
  3. Додаток зараз робить запити API (на curl) з підписаним JWT, не потребуючи знати секрет клієнта

Як це зробити, використовуючи kcadm.sh або curl? Я не можу знайти це в документації (тут або в специфікації API). Здається, що мені потрібно налаштувати сховище ключів, щоб Keycloak міг аутентифікувати вхідний підписаний JWT, але мені просто потрібно, щоб Keycloak аутентифікував власний підписаний JWT, тому в цій системі немає сховища ключів. Це має сенс? Якщо я просто запустю kcadm.sh і передам JWT з параметром –secret, я отримую помилку Параметр client_assertion_type відсутній.

Останні новини
Читайте також