7.4 KiB
Установка и базовая настройка 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
- Скачайте последнюю версию Keycloak:
wget https://github.com/keycloak/keycloak/releases/download/26.3.0/keycloak-26.3.0.tar.gz
- Распакуйте архив:
tar -xvzf keycloak-26.3.0.tar.gz
sudo mv keycloak-26.3.0 /opt/keycloak
- Создайте пользователя для Keycloak:
sudo useradd -r -s /bin/false keycloak
sudo chown -R keycloak:keycloak /opt/keycloak
Шаг 3: Настройка базы данных (опционально, для продакшена)
По умолчанию используется встроенная база H2, но для продакшена рекомендуется PostgreSQL.
- Установите PostgreSQL:
sudo apt install -y postgresql postgresql-contrib
- Создайте базу данных и пользователя:
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
- Настройте 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
- Установите 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
- Соберите и настройте Keycloak:
/opt/keycloak/bin/kc.sh build
- Запустите Keycloak в режиме разработки:
/opt/keycloak/bin/kc.sh start-dev
- Работает на
http://localhost:8080. - Для продакшена используйте
kc.sh startс HTTPS.
- Проверьте доступ:
Откройте браузер и перейдите по
http://localhost:8080.
Шаг 5: Базовая настройка Keycloak
- Создайте администратора: При первом запуске задайте логин и пароль администратора:
/opt/keycloak/bin/kc.sh start-dev
-
Войдите в админ-консоль:
- Перейдите по
http://localhost:8080/admin. - Используйте учетные данные администратора.
- Перейдите по
-
Создайте Realm:
- В админ-консоли выберите Create Realm.
- Задайте имя, например,
myapp-realm.
-
Создайте клиента:
- В разделе 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 ID:
- Скопируйте Client Secret.
-
Создайте пользователя:
- В разделе Users выберите Add user.
- Задайте имя, например,
testuser. - Установите пароль в Credentials (например,
testpassword).
-
Настройте роли:
- В разделе Roles создайте роль, например,
user. - Назначьте роль пользователю в Role Mapping.
- В разделе Roles создайте роль, например,
Шаг 6: Интеграция с микросервисом
-
Получите OpenID Connect конфигурацию:
- В Realm Settings → General → OpenID Endpoint Configuration.
- URL:
http://localhost:8080/realms/myapp-realm/.well-known/openid-configuration.
-
Пример для 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
- Тестирование:
- Перейдите по:
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 как службы
- Создайте 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
- Активируйте сервис:
sudo systemctl daemon-reload
sudo systemctl enable keycloak
sudo systemctl start keycloak
- Проверьте статус:
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-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать!