Итак, у Keycloak есть этот API администратора: https://www.keycloak.org/docs-api/22.0.1/rest-api/index.html#_overview
Они не упоминают, какой тип аутентификации использовать. Пробовал с Basic, но не работает.
Запрос токена доступа
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
https://www.docker.com/products/docker-desktop/
Сохранить как 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
Скачайте и установите Почтальон
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
Получить reamls
список
GET http://localhost:8080/admin/realms
На вкладке Authorization
Выберите Bearer Token
и введите этот текст в Token
редакторе.
{{master-token}}
Вы можете увидеть список realms
в теле ответа.
По умолчанию главный токен действителен только 60 секунд.
Вы можете продлить больше времени для целей отладки.
В браузере откройте этот URL
http://localhost:8080
Войдите, используя основные учетные данные имя пользователя «admin» и пароль «admin».
Похоже, вы знаете Keycloak. Можно ли получить токен на основе другого токена? Я имею в виду, что клиент отправляет запрос на сервер ресурсов с помощью токена jwt, полученного от kc. RS1 необходимо отправить запрос RS2. Может ли он получить новый токен, используя старый токен с областью действия, отличной от Keycloak?
Я не уверен, что токен Resource1 получит новый токен для Resource 2, но это кажется неправильным действием. новый токен можно получить с помощью токена обновления для токена того же ресурса, а не другого токена ресурса. Я думаю, вы хотите оценить доступ к ресурсам. Возможно, этот ответ поможет понять шаги. Если он не ищет, вы можете задать новый вопрос в потоке Stack Over.
случайно выбрасываю лучшую документацию, чем официальный документ keycloak!
На самом деле это хорошо документировано здесь: https://www.keycloak.org/docs/24.0.3/server_development/#admin-rest-api
REST API администратора
Чтобы вызвать API, вам необходимо получить токен доступа с соответствующими разрешениями.
- Примеры использования CURL
- Аутентификация с использованием имени пользователя и пароля
- Аутентификация с помощью сервисного аккаунта
- Пример использования Java
- Аутентификация с помощью библиотеки
keycloak-admin-client
Рад слышать, что вы это получили.