Files
Ubuntu_docs/Keycloak_install.md
Igor I 5d40bb271d +
2025-07-04 12:26:16 +05:00

7.4 KiB
Raw Blame History

Установка и базовая настройка 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:

sudo apt update &&
sudo apt install openjdk-21-jdk openjdk-21-jre -y

Проверьте версию Java:

java -version

Ожидаемый вывод:

openjdk 17.0.9 ...

Шаг 2: Загрузка и установка Keycloak

  1. Скачайте последнюю версию Keycloak:
  wget https://github.com/keycloak/keycloak/releases/download/26.3.0/keycloak-26.3.0.tar.gz
  1. Распакуйте архив:
  tar -xvzf keycloak-26.3.0.tar.gz
  sudo mv keycloak-26.3.0 /opt/keycloak
  1. Создайте пользователя для Keycloak:
  sudo useradd -r -s /bin/false keycloak
  sudo chown -R keycloak:keycloak /opt/keycloak

Шаг 3: Настройка базы данных (опционально, для продакшена)

По умолчанию используется встроенная база H2, но для продакшена рекомендуется PostgreSQL.

  1. Установите PostgreSQL:
  sudo apt install -y postgresql postgresql-contrib
  1. Создайте базу данных и пользователя:
  sudo -u postgres psql

Внутри psql:

  CREATE DATABASE keycloak;
  CREATE USER keycloak WITH PASSWORD 'your_secure_password';
  GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak;
  \q
  1. Настройте Keycloak для PostgreSQL: Отредактируйте /opt/keycloak/conf/keycloak.conf:
  sudo nano /opt/keycloak/conf/keycloak.conf

Добавьте:

  db=postgres
  db-url=jdbc:postgresql://localhost:5432/keycloak
  db-username=keycloak
  db-password=your_secure_password
  1. Установите JDBC-драйвер PostgreSQL:
  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:
  /opt/keycloak/bin/kc.sh build
  1. Запустите Keycloak в режиме разработки:
  /opt/keycloak/bin/kc.sh start-dev
  • Работает на http://localhost:8080.
  • Для продакшена используйте kc.sh start с HTTPS.
  1. Проверьте доступ: Откройте браузер и перейдите по http://localhost:8080.

Шаг 5: Базовая настройка Keycloak

  1. Создайте администратора: При первом запуске задайте логин и пароль администратора:
  /opt/keycloak/bin/kc.sh start-dev
  1. Войдите в админ-консоль:

    • Перейдите по http://localhost:8080/admin.
    • Используйте учетные данные администратора.
  2. Создайте Realm:

    • В админ-консоли выберите Create Realm.
    • Задайте имя, например, myapp-realm.
  3. Создайте клиента:

    • В разделе 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.
  4. Создайте пользователя:

    • В разделе Users выберите Add user.
    • Задайте имя, например, testuser.
    • Установите пароль в Credentials (например, testpassword).
  5. Настройте роли:

    • В разделе Roles создайте роль, например, user.
    • Назначьте роль пользователю в Role Mapping.

Шаг 6: Интеграция с микросервисом

  1. Получите OpenID Connect конфигурацию:

    • В Realm SettingsGeneralOpenID Endpoint Configuration.
    • URL: http://localhost:8080/realms/myapp-realm/.well-known/openid-configuration.
  2. Пример для Spring Boot: Добавьте зависимость:

   <dependency>
       <groupId>org.keycloak</groupId>
       <artifactId>keycloak-spring-boot-starter</artifactId>
       <version>24.0.5</version>
   </dependency>

Настройте application.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
  1. Тестирование:
    • Перейдите по:
   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-сервис:
  sudo nano /etc/systemd/system/keycloak.service

Добавьте:

   [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
  1. Активируйте сервис:
  sudo systemctl daemon-reload
  sudo systemctl enable keycloak
  sudo systemctl start keycloak
  1. Проверьте статус:
  sudo systemctl status keycloak

Полезные советы

  • HTTPS: Настройте SSL/TLS в keycloak.conf:
  https-certificate-file=/path/to/cert.pem
  https-certificate-key-file=/path/to/key.pem
  hostname=your-domain.com
  • Резервное копирование: Сохраняйте базу данных и настройки realm.
  • Логирование: Включите в keycloak.conf:
  log-level=info

Теперь Keycloak установлен, настроен и готов к использованию в вашей микросервисной архитектуре. Вы можете интегрировать его с API Gateway или микросервисами, используя JWT-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать!