This commit is contained in:
Igor I
2025-07-04 12:26:16 +05:00
parent 3ca998f1cf
commit 5d40bb271d

218
Keycloak_install.md Normal file
View File

@ -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
<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-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать!