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

218 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка и базовая настройка 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
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>24.0.5</version>
</dependency>
```
Настройте `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-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать!