Я попытался реализовать олицетворение пользователя с помощью Keycloak, но получил эту ошибку.
"error": "Feature not enabled"
На этом изображении показано, что я запускал в Postman, и ошибка:
Чтобы запустить keycloak, я запустил Docker в Windows 10, а затем эту команду:
docker run -p 8080:8080 -e KEYCLOAK_PASSWORD=admin123 -e KEYCLOAK_USER=admin -e DB_VENDOR=H2 jboss/keycloak
поэтому я использую образ докера jBoss от RedHat.
Поэтому я хотел включить эту отсутствующую функцию в keycloak, но из документации по keycloak я не могу понять, где запустить эту конкретную команду:
For example, to enable docker and token-exchange, enter this command:
bin/kc.[sh|bat] build --features=docker,token-exchange
чтобы, например, эта функция обмена токенами была доступна в keycloak.
Я пытался найти в jBoss этот файл kc для запуска этой команды, но не нашел. Сначала я нашел изображение jBoss:
docker exec 42f1c5c8bf55 it bash
затем я вхожу в jboss
sh-4.4$ cd /opt/jboss
sh-4.4$ find . -name "kc.sh"
find: ‘./proc/tty/driver’: Permission denied
find: ‘./var/cache/ldconfig’: Permission denied
find: ‘./lost+found’: Permission denied
sh-4.4$ find . -name "kc.*"
find: ‘./proc/tty/driver’: Permission denied
find: ‘./var/cache/ldconfig’: Permission denied
find: ‘./lost+found’: Permission denied
Я много искал и пробовал разные решения, но ни одно из них не сработало.
Кто-нибудь, пожалуйста, дайте мне небольшую помощь или, по крайней мере, идею, как реализовать новую функцию, такую как обмен токенами или access_token, внутри keycloak.
Вы можете использовать переменные среды с префиксом KC_ в контейнере Docker. Например, чтобы включить функции:
docker run -p 8080:8080 -e KEYCLOAK_PASSWORD=admin123 -e KEYCLOAK_USER=admin -e KC_FEATURES=token-exchange -e DB_VENDOR=H2 jboss/keycloak
Обратите внимание, что изображение jboss/keycloak
больше не является текущим официальным изображением Keycloak. Вероятно, вы захотите перейти на quay.io/keycloak/keycloak
образы (см. документацию Keycloak Docker).
Вы можете включить функции, используя переменную окружения env var JAVA_OPTS_APPEND
например, чтобы разрешить администраторам выдавать себя за пользователей, просто запустите контейнер следующим образом:
docker run -p 8080:8080 -e KEYCLOAK_PASSWORD=admin123 -e KEYCLOAK_USER=admin -e DB_VENDOR=H2 -e JAVA_OPTS_APPEND = "-Dkeycloak.profile.feature.impersonation=enabled" jboss/keycloak
Действительно на сервере я использую hub.docker.com/r/bitnami/keycloak/tags не jboss. Приборная панель такая же, как у набережной. Я запустил докер с quay.io/keacloak и на странице Master Realm я вижу: TOKEN_EXCHANGE — Preview. Что это значит? TOKEN_EXCHANGE недоступен? Или, если он доступен, как я могу его включить?