diff --git a/Keycloak_install.md b/Keycloak_install.md new file mode 100644 index 0000000..814f9ee --- /dev/null +++ b/Keycloak_install.md @@ -0,0 +1,218 @@ +# Установка и базовая настройка Keycloak на Ubuntu + +Это руководство описывает процесс установки Keycloak на Ubuntu (20.04 или 22.04) и его базовую настройку для использования в микросервисной архитектуре. + +## Требования +- Ubuntu 20.04 или 22.04. +- Java Development Kit (JDK) версии 17 или выше. +- Доступ к интернету. +- (Опционально) PostgreSQL для продакшен-использования. + +## Шаг 1: Установка Java +Keycloak требует Java. Установим OpenJDK 17: + +```sh +sudo apt update && +sudo apt install openjdk-21-jdk openjdk-21-jre -y +``` + +Проверьте версию Java: +```sh +java -version +``` + +Ожидаемый вывод: +``` +openjdk 17.0.9 ... +``` + +## Шаг 2: Загрузка и установка Keycloak +1. **Скачайте последнюю версию Keycloak**: +```sh + wget https://github.com/keycloak/keycloak/releases/download/26.3.0/keycloak-26.3.0.tar.gz +``` + +2. **Распакуйте архив**: +```sh + tar -xvzf keycloak-26.3.0.tar.gz + sudo mv keycloak-26.3.0 /opt/keycloak +``` + +3. **Создайте пользователя для Keycloak**: +```sh + sudo useradd -r -s /bin/false keycloak + sudo chown -R keycloak:keycloak /opt/keycloak +``` + +## Шаг 3: Настройка базы данных (опционально, для продакшена) +По умолчанию используется встроенная база H2, но для продакшена рекомендуется PostgreSQL. + +1. **Установите PostgreSQL**: +```sh + sudo apt install -y postgresql postgresql-contrib +``` + +2. **Создайте базу данных и пользователя**: +```sh + sudo -u postgres psql +``` + + Внутри psql: +```sql + CREATE DATABASE keycloak; + CREATE USER keycloak WITH PASSWORD 'your_secure_password'; + GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak; + \q +``` + +3. **Настройте Keycloak для PostgreSQL**: + Отредактируйте `/opt/keycloak/conf/keycloak.conf`: +```sh + sudo nano /opt/keycloak/conf/keycloak.conf +``` + + Добавьте: +```ini + db=postgres + db-url=jdbc:postgresql://localhost:5432/keycloak + db-username=keycloak + db-password=your_secure_password +``` + +4. **Установите JDBC-драйвер PostgreSQL**: +```sh + wget https://jdbc.postgresql.org/download/postgresql-42.7.3.jar + sudo mv postgresql-42.7.3.jar /opt/keycloak/providers/ +``` + +## Шаг 4: Запуск Keycloak +1. **Соберите и настройте Keycloak**: +```sh + /opt/keycloak/bin/kc.sh build +``` + +2. **Запустите Keycloak в режиме разработки**: +```sh + /opt/keycloak/bin/kc.sh start-dev +``` + + - Работает на `http://localhost:8080`. + - Для продакшена используйте `kc.sh start` с HTTPS. + +3. **Проверьте доступ**: + Откройте браузер и перейдите по `http://localhost:8080`. + +## Шаг 5: Базовая настройка Keycloak +1. **Создайте администратора**: + При первом запуске задайте логин и пароль администратора: +```sh + /opt/keycloak/bin/kc.sh start-dev +``` + +2. **Войдите в админ-консоль**: + - Перейдите по `http://localhost:8080/admin`. + - Используйте учетные данные администратора. + +3. **Создайте Realm**: + - В админ-консоли выберите **Create Realm**. + - Задайте имя, например, `myapp-realm`. + +4. **Создайте клиента**: + - В разделе **Clients** выберите **Create client**. + - Настройки: + - **Client ID**: `myapp-client`. + - **Client type**: `OpenID Connect`. + - **Client authentication**: Включите для конфиденциального клиента. + - **Root URL**: Например, `http://localhost:3000`. + - **Valid redirect URIs**: Например, `http://localhost:3000/*`. + - Скопируйте **Client Secret**. + +5. **Создайте пользователя**: + - В разделе **Users** выберите **Add user**. + - Задайте имя, например, `testuser`. + - Установите пароль в **Credentials** (например, `testpassword`). + +6. **Настройте роли**: + - В разделе **Roles** создайте роль, например, `user`. + - Назначьте роль пользователю в **Role Mapping**. + +## Шаг 6: Интеграция с микросервисом +1. **Получите OpenID Connect конфигурацию**: + - В **Realm Settings** → **General** → **OpenID Endpoint Configuration**. + - URL: `http://localhost:8080/realms/myapp-realm/.well-known/openid-configuration`. + +2. **Пример для Spring Boot**: + Добавьте зависимость: +```xml + + org.keycloak + keycloak-spring-boot-starter + 24.0.5 + +``` + + Настройте `application.properties`: +```properties + keycloak.realm=myapp-realm + keycloak.auth-server-url=http://localhost:8080 + keycloak.resource=myapp-client + keycloak.credentials.secret=your-client-secret + Elders keycloak.use-resource-role-mappings=true +``` + +3. **Тестирование**: + - Перейдите по: + ``` + http://localhost:8080/realms/myapp-realm/protocol/openid-connect/auth?client_id=myapp-client&response_type=code&redirect_uri=http://localhost:3000 + ``` + - Войдите как `testuser` с паролем `testpassword`. + +## Шаг 7: Настройка Keycloak как службы +1. Создайте systemd-сервис: +```sh + sudo nano /etc/systemd/system/keycloak.service +``` + + Добавьте: +```ini + [Unit] + Description=Keycloak + After=network.target + + [Service] + User=keycloak + Group=keycloak + WorkingDirectory=/opt/keycloak + ExecStart=/opt/keycloak/bin/kc.sh start --hostname=your-domain.com --https-certificate-file=/path/to/cert.pem --https-certificate-key-file=/path/to/key.pem + Restart=always + + [Install] + WantedBy=multi-user.target +``` + +2. Активируйте сервис: +```sh + sudo systemctl daemon-reload + sudo systemctl enable keycloak + sudo systemctl start keycloak +``` + +3. Проверьте статус: +```sh + sudo systemctl status keycloak +``` + +## Полезные советы +- **HTTPS**: Настройте SSL/TLS в `keycloak.conf`: +```ini + https-certificate-file=/path/to/cert.pem + https-certificate-key-file=/path/to/key.pem + hostname=your-domain.com +``` +- **Резервное копирование**: Сохраняйте базу данных и настройки realm. +- **Логирование**: Включите в `keycloak.conf`: +```ini + log-level=info +``` + +Теперь Keycloak установлен, настроен и готов к использованию в вашей микросервисной архитектуре. Вы можете интегрировать его с API Gateway или микросервисами, используя JWT-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать! \ No newline at end of file