Коротко про Keycloak
Салимжанов Р.Д.
Введение
Keycloak — это решение для управления идентификацией и доступом с открытым исходным кодом. Оно позволяет разработчикам легко добавлять аутентификацию и авторизацию в свои приложения. Keycloak поддерживает различные протоколы, такие как OAuth 2.0, OpenID Connect и SAML, что делает его универсальным инструментом для обеспечения безопасности приложений. Он предоставляет функции, такие как единый вход (SSO), управление пользователями, аутентификация и многое другое.
Установка Keycloak
Для начала необходимо скачать последнюю версию Keycloak с официального сайта.
Выберите версию, соответствующую вашей операционной системе.
Запуск Keycloak
Существует множество вариантов запуска Keycloak, но в этой статье я разберу два наиболее популярных способа: запуск через консоль и запуск с использованием Docker. Оба метода имеют свои преимущества и позволяют быстро развернуть сервер Keycloak для разработки и тестирования.
1.Запуск Keycloak через консоль
Этот способ подходит для тех, кто предпочитает работать с локальной средой и не хочет зависеть от контейнеризации. Для запуска Keycloak через консоль выполните следующие шаги:
- Скачайте и распакуйте последнюю версию Keycloak с официального сайта, в любую директорию. Но лучше всего чтобы путь содержал только латинские символы.
Откройте терминал и перейдите в директорию, куда вы распаковали Keycloak.
Выполните команду: bin\kc.bat start-dev
- После успешного запуска сервера, вы сможете получить доступ к админ-панели по адресу http://localhost:8080. В первый раз вам будет предложено создать временную учетную запись администратора, которая позволит вам управлять Realm, пользователями и клиентами.
2. Запуск Keycloak через Docker
Использование Docker для запуска Keycloak — это удобный и быстрый способ, который позволяет избежать проблем с зависимостями и конфигурацией окружения. Для запуска Keycloak в Docker выполните следующие шаги:
- Убедитесь, что у вас установлен Docker. Если он не установлен, вы можете скачать его с официального сайта https://www.docker.com/get-started/
Создайте Docker Compose файл. Создайте файл с именем docker-compose.yml в удобной для вас директории и добавьте в него следующую конфигурацию для Keycloak:
В этом файле мы определяем сервис keycloak, указываем образ, который будем использовать, настраиваем переменные окружения для создания учетной записи администратора и открываем порт 8080 для доступа к Keycloak. А также вместо базы данных H2, используем PostgreSQL в качестве базы данных для Keycloak.
Далее удалим контейнеры, сети, образы и данные, чтобы очистить окружение, выполните следующую команду:
docker-compose down -v --rmi all
docker system prune -a --volumes
Эти команды удалят все контейнеры, сети и образы, связанные с вашим проектом, а также очистят неиспользуемые данные в Docker.
После того как готов файл docker-compose.yml, выполните команду:
docker-compose up
Эта команда запустит контейнеры, определенные в вашем Docker Compose файле. Убедитесь, что все сервисы запускаются без ошибок. В логах контейнера Keycloak вы должны увидеть запись:
Listening on: http://0.0.0.0:8080
Это означает, что Keycloak успешно запущен и доступен по адресу http://localhost:8080.
Теперь вы можете перейти в админ-панель Keycloak, используя учетные данные, которые вы указали (логин: admin, пароль: admin), и начать настройку вашего сервера аутентификации.
Если при попытке входа в админ-панель Keycloak по адресу http://localhost:8080 вы видите сообщение "Local access required", это может означать, что Keycloak не был правильно настроен для доступа извне.
В таком случае, если доступ невозможен, вы можете создать администратора вручную с помощью следующей команды:
docker exec -it keycloak /opt/keycloak/bin/kc.sh bootstrap-admin --username admin --password admin
Если вы все еще сталкиваетесь с проблемами доступа, убедитесь, что ваш Docker-контейнер правильно настроен и что порты открыты для доступа. Вы также можете проверить логи контейнера на наличие ошибок, выполнив команду:
docker logs keycloak
Настройки Keycloak
После первого входа в админ-панель Keycloak, если надо вы можете изменить язык интерфейса. Для этого перейдите в настройки профиля и выберите нужный язык из выпадающего списка.
Основные операции в Keycloak
Создание Realm в Keycloak Realm — это изолированная область, в которой вы можете управлять пользователями, клиентами и ролями. Чтобы создать новый Realm, выполните следующие шаги:
Войдите в админ-панель Keycloak.
Нажмите на "Create Realm".
Введите имя для нового Realm и нажмите "Create".
Создание клиента Клиент — это приложение, которое будет использовать Keycloak для аутентификации. Чтобы создать клиента:
Перейдите в раздел "Clients".
Нажмите "Create".
Создание роли Роли используются для управления доступом. Чтобы создать роль: Перейдите в раздел "Realm roles".
Нажмите "Add Role".
Введите имя роли и нажмите "Save".
Далее в настройках этой роли вы сами можете дать определенные права.
Чтобы создать нового пользователя:
Перейдите в раздел "Users".
Нажмите " Create new User".
Заполните необходимые поля и нажмите "Create".
После создания пользователя вы будете перенаправлены на страницу настроек пользователя.
Перейдите в раздел "Credentials" (Учетные данные).
В этом разделе вы можете установить пароль для нового пользователя. Введите желаемый пароль в поле "Password" и подтвердите его в поле "Password Confirmation".
Заключение
Keycloak — это мощный инструмент для управления идентификацией и доступом, который предлагает множество возможностей для разработчиков. Его простота в установке и настройке делает его идеальным выбором для обеспечения безопасности приложений.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1) Keycloak Documentation. // [электронный ресурс]. URL: https://www.keycloak.org/documentation (дата обращения 21.01.2025).
2) Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0 // [электронный ресурс]. URL: https://habr.com/ru/companies/axenix/articles/780422/ (дата обращения 20.01.2025).
3) Цикл постов про Keycloak. Часть первая: Внедрение// [электронный ресурс]. URL: https://habr.com/ru/articles/716232/ (дата обращения 20.01.2024).