Keycloak – это программный продукт с открытым исходным кодом, обеспечивающий возможность единого входа с использованием средств управления идентификацией и управления доступом, предназначенных для современных приложений и служб.
По состоянию на 2020 года этот проект сообщества JBoss находился под управлением Red Hat, которая использует его в качестве проекта для своего продукта RH-SSO.
С концептуальной точки зрения цель этого инструмента – упростить защиту приложений и сервисов.
Используя Keycloak, разработчики могут добавлять аутентификацию в приложения и обезопасить службы с минимальными усилиями.
Нет необходимости иметь дело с хранением пользователей или аутентификацией.
Все это доступно из коробки.
Вы даже получите расширенные функции, такие как User Federation, Identity Brokering и Social Login.
Keycloak состоит из двух основных компонентов.
- Keycloak Server – это серверный компонент Keycloak.
- Keycloak Application Adapter – это плагины для приложений для доступа к службам аутентификации Keycloak.
Особенности Keycloak:
Некоторые примечательные особенности Keycloak:
- Регистрация пользователя
- Single Sign-On/Sign-Off, принадлежащих к одной области
- 2-факторная аутентификация
- Интеграция LDAP
- Брокер Kerberos
Скачивание необходимых образов из Docker Hub:
Подключитесь к серверу от УЗ администратора с помощью инструмента ssh.
Поскольку мы уже установили Docker, теперь мы можем получить доступ к Docker Hub и загрузить необходимые образы.
Здесь мы создаем два контейнера,
- фактический сервер Jboss/Keycloak и
- MariaDB как хранилище данных для сервера Keycloak
Сначала скачайте официальный образ mariadb.
sudo docker pull mariadb
Using default tag: latest
latest: Pulling from library/mariadb
5c939e3a4d10: Pull complete
c63719cdbe7a: Pull complete
19a861ea6baf: Pull complete
651c9d2d6c4f: Pull complete
077e14009561: Pull complete
5f038f59a326: Pull complete
1b0216466f21: Pull complete
1b0570aa273a: Pull complete
07d05628c2aa: Pull complete
8f2f7d8e5cbd: Pull complete
fbf3ad7b2eec: Pull complete
22080b3a46be: Pull complete
8021ad8acbef: Pull complete
0b1f06407ccd: Pull complete
Digest: sha256:6f80d059050b80fd8bd951323f6e4a7dde36d62e355cf01b92d26c34d3f702f6
Status: Downloaded newer image for mariadb:latest
$ sudo docker pull jboss/keycloak
Using default tag: latest
latest: Pulling from jboss/keycloak
03e56b46bf0b: Pull complete
3a13cc2f5d65: Pull complete
315b0e98b961: Pull complete
3ac53bc98ab6: Pull complete
08d597fdd8b1: Pull complete
Digest: sha256:70171289054e77e2a091fd4b7d274807e777bd01d18719a7b7b139b67d1952d4
Status: Downloaded newer image for jboss/keycloak:latest
Создайте виртуальную сеть в Docker:
Чтобы соединить контейнеры MariaDB и Keycloak, нам нужно создать виртуальную сеть.
$ sudo docker network create keycloak-network
152e689ac69f722e8b36bcb61558dba740ec909ec27c5a8ba34f2f5ca0694038
Запустите сервер MariaDB в контейнере Docker:
Создайте каталог на хосте для хранения файлов базы данных MariaDB, чтобы мы могли использовать те же файлы базы данных с другими контейнерами сервера MariaDB.
$ mkdir /home/itsecforu/keycloak_data
Создайте контейнер MariaDB и смонтируйте в нем каталог keycloak_data.
$ sudo docker run -d \
> --name mariadb \
> --net keycloak-network \
> -v /home/itsecforu/keycloak_data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=Root@1234 \
> -e MYSQL_DATABASE=keycloak \
> -e MYSQL_USER=keycloak \
> -e MYSQL_PASSWORD=Keycloak@1234 \
> mariadb
55de1ec4e0c94dbe22897e6122cec57a250c95cbc4dc1be76fc7a06832f7641a
Используя Docker, мы успешно запустили контейнер MariaDB, который будет служить хранилищем данных для сервера Keycloak.
Теперь проверьте содержимое каталога keycloak_data.
ls /home/itsecforu/keycloak_data/
aria_log.00000001 ibdata1 ibtmp1 mysql
aria_log_control ib_logfile0 keycloak performance_schema
ib_buffer_pool ib_logfile1 multi-master.info
Запустите сервер Jboss/Keycloak в контейнере Docker:
Создайте и запустите контейнер Jboss/Keycloak с помощью команды docker.
$ sudo docker run -d \
> --name keycloak \
> --net keycloak-network \
> -p 8080:8080 \
> -e KEYCLOAK_USER=admin \
> -e KEYCLOAK_PASSWORD=Admin@1234 \
> -e DB_ADDR=mariadb \
> -e DB_USER=keycloak \
> -e DB_PASSWORD=Keycloak@1234 \
> jboss/keycloak
e2b42254fa94804e1ab9cf2924fa0463b8997205f6002e81f542b117f56a91bf
Мы создали и запустили контейнер Jboss/Keycloak.
Проверьте состояние контейнеров докеров с помощью следующей команды.
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2b42254fa94 jboss/keycloak "/opt/jboss/tools/doâ¦" 10 minutes ago Up 10 minutes 0.0.0.0:8080->8080/tcp, 8443/tcp keycloak
55de1ec4e0c9 mariadb "docker-entrypoint.sâ¦" 26 minutes ago Up 26 minutes 3306/tcp mariadb
sudo ufw allow 8080/tcp
Rules updated
Rules updated (v6)
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Доступ к веб-интерфейсу сервера Keycloak
Откройте URL-адрес http://ваш-ip:8080 в браузере.
После успешного входа мы переходим на страницу «Realm Settings».
Мы успешно запустили контейнер Keycloak в Docker.
Инструкция устарела. Автор обнови контент!
Обновим
А что собственно не получилось? образа скачиваются
Здравствуйте, подскажите пожалуйста, как запустить контейнеры mariadb и keyckloak после перезапуска сервера?
Добрый день, имеется ввиду автозапуск при ребуте?
Полагаю, что версии используемых приложений, да и неплохо было бы расширить эту тему для использовании в High Availability или Fault Tolerance.
присылайте материалы, обязательно разместим
Создаем директорию keycloak_data в домашней директории пользователя itsecforu, а при старте и настройке mariadb смотрим на домашнюю директорию пользователя ahmer
Спасибо, поправили