Как пройти аутентификацию в API администратора Keycloak?

Итак, у Keycloak есть этот API администратора: https://www.keycloak.org/docs-api/22.0.1/rest-api/index.html#_overview

Они не упоминают, какой тип аутентификации использовать. Пробовал с Basic, но не работает.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 569
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Запрос токена доступа

https://datatracker.ietf.org/doc/html/rfc6749#section-4.3.2

Конечная точка токена

POST http://localhost:8080/realms/{realm}/protocol/openid-connect/token
grant_type: password
username  : {admin username}
password  : {admin password}
client_id : admin-cli

Демо

1 Установите Docker Desktop для Windows или Mac

https://www.docker.com/products/docker-desktop/

2. Запустите Keycloak с помощью docker-compose.

Сохранить как docker-compose.yml

version: '3.8'

services:
  postgres:
    image: postgres:15.6
    container_name: postgres_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password

  keycloak_web:
    image: quay.io/keycloak/keycloak:24.0.3
    container_name: keycloak_web
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: password

      KC_HOSTNAME: localhost
      KC_HOSTNAME_STRICT: false
      KC_HOSTNAME_STRICT_HTTPS: false

      KC_LOG_LEVEL: info
      KC_METRICS_ENABLED: true
      KC_HEALTH_ENABLED: true
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
    command: start-dev
    depends_on:
      - postgres
    ports:
      - 8080:8080

volumes:
  postgres_data:
docker compose up -d

3. Получите главный токен от Почтальона

Скачайте и установите Почтальон

POST http://localhost:8080/realms/master/protocol/openid-connect/token

Во вкладке body Выберите x-www-form-urlencoded

Учетные данные администратора мастера username — администратор, password — администратор.

grant_type: password
username: admin
password: admin
client_id: admin-cli

Во вкладке Tests

const jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("master-token", jsonData.access_token);

Нажмите кнопку Send

4. Вызов API администратора от Postman

Получить reamls список

GET http://localhost:8080/admin/realms

На вкладке Authorization Выберите Bearer Token и введите этот текст в Token редакторе.

{{master-token}}

Вы можете увидеть список realms в теле ответа.

Примечание

По умолчанию главный токен действителен только 60 секунд.

Вы можете продлить больше времени для целей отладки.

В браузере откройте этот URL

http://localhost:8080

Войдите, используя основные учетные данные имя пользователя «admin» и пароль «admin».

Рад слышать, что вы это получили.

Bench Vue 29.04.2024 13:26

Похоже, вы знаете Keycloak. Можно ли получить токен на основе другого токена? Я имею в виду, что клиент отправляет запрос на сервер ресурсов с помощью токена jwt, полученного от kc. RS1 необходимо отправить запрос RS2. Может ли он получить новый токен, используя старый токен с областью действия, отличной от Keycloak?

Dinu Nicolae 29.04.2024 13:36

Я не уверен, что токен Resource1 получит новый токен для Resource 2, но это кажется неправильным действием. новый токен можно получить с помощью токена обновления для токена того же ресурса, а не другого токена ресурса. Я думаю, вы хотите оценить доступ к ресурсам. Возможно, этот ответ поможет понять шаги. Если он не ищет, вы можете задать новый вопрос в потоке Stack Over.

Bench Vue 29.04.2024 13:46

случайно выбрасываю лучшую документацию, чем официальный документ keycloak!

TheNoobHunter66 09.05.2024 12:22

На самом деле это хорошо документировано здесь: https://www.keycloak.org/docs/24.0.3/server_development/#admin-rest-api

REST API администратора

Чтобы вызвать API, вам необходимо получить токен доступа с соответствующими разрешениями.

  • Примеры использования CURL
    • Аутентификация с использованием имени пользователя и пароля
    • Аутентификация с помощью сервисного аккаунта
  • Пример использования Java
    • Аутентификация с помощью библиотеки keycloak-admin-client

Другие вопросы по теме