+
This commit is contained in:
218
Keycloak_install.md
Normal file
218
Keycloak_install.md
Normal 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-токены для аутентификации и авторизации. Если нужны дополнительные детали или помощь с конкретным сценарием, дайте знать!
|
||||
Reference in New Issue
Block a user