Авторизация пользователей

SOBERIS использует Keycloak для обеспечения безопасной аутентификации и авторизации пользователей. Система поддерживает OAuth2/OpenID Connect для интеграции с внешними системами аутентификации.
Все пользователи должны пройти аутентификацию через Keycloak для доступа к системе. Настройте сложные пароли.
Интеграция с Keycloak

SOBERIS использует Keycloak как основной провайдер аутентификации. Keycloak обеспечивает централизованное управление пользователями, ролями и правами доступа.
Основные возможности:

JWT токены
Безопасная передача авторизационных данных через JSON Web Tokens

Управление сессиями
Контроль активных сессий и автоматическое обновление токенов

OAuth2/OpenID Connect
Стандартный протокол для интеграции с внешними системами

Централизованная авторизация
Единая точка управления доступом для всех компонентов системы
Модель ролей и доступа

SOBERIS реализует детализированную систему ролей (RBAC), где каждая роль предоставляет доступ к конкретным операциям в системе.
Основные роли системы:

upload_schema
Загрузка новых схем в систему
Доступ: Создание и загрузка схем документов и директорий

update_schema
Обновление существующих схем
Доступ: Изменение и обновление схем, управление версиями

import_schema
Импорт схем из внешних источников
Доступ: Импорт схем из JSON, XML и других форматов

export_schema
Экспорт схем во внешние форматы
Доступ: Экспорт схем в различные форматы для резервного копирования

read_specification
Чтение спецификаций и документации API
Доступ: Просмотр OpenAPI спецификаций и технической документации

clear_cache
Управление кэшем системы
Доступ: Очистка кэша схем и транзакций, управление производительностью

read_metrics
Просмотр метрик и мониторинга
Доступ: Мониторинг производительности, просмотр логов, состояние кластера

update_log_ttl
Управление временем жизни логов
Доступ: Настройка TTL для различных типов логов, архивация данных

api_keys_management
Управление API-ключами
Доступ: Создание, удаление и управление API-ключами для внешних интеграций
Аутентификация через JWT

Система использует JWT (JSON Web Tokens) для передачи авторизационных данных между клиентом и сервером. Все запросы к защищенным эндпоинтам должны содержать валидный JWT токен.
# Структура JWT токена: {
    "exp": 1640995200,
    "iat": 1640908800,
    "auth_time": 1640908800,
    "jti": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "iss": "https://keycloak.soberis.com/realms/soberis",
    "aud": "soberis-client",
    "sub": "f:uuid:550e8400-e29b-41d4-a716-446655440000",
    "typ": "Bearer",
    "azp": "soberis-client",
    "session_state": "4b4a2f48-e1ec-4c51-9c8e-7e4f5e4c2b1a",
    "acr": "1",
    "realm_access": {
        "roles": [
            "upload_schema",
            "read_metrics",
            "api_keys_management"
        ]
    },
    "scope": "openid profile email",
    "email_verified": true,
    "preferred_username": "admin",
    "given_name": "Administrator",
    "family_name": "User",
    "email": "admin@soberis.com"
}
# Передача токена в запросах
# JWT токен передается в заголовке Authorizationс префиксом Bearer.
curl -X GET "https://your-domain.com/sbrs-schema/list" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-H "SBRS-Correlation-Id: unique-correlation-id" \
-H "SBRS-Originator: your-application" \
-H "SBRS-Message-Id: unique-message-id"
Управление пользователями

Создание пользователя:
Новые пользователи создаются в Keycloak с назначением соответствующих ролей. Процесс создания:
  1. Войдите в административную консоль Keycloak
  2. Выберите realm "soberis"
  3. Перейдите в раздел "Users" → "Add user"
  4. Заполните обязательные поля: Username: уникальное имя пользователя, Email: адрес электронной почты, First Name / Last Name: полное имя
  5. Включите опцию "Email Verified"
  6. Сохраните пользователя
  7. Установите пароль во вкладке "Credentials"
  8. Назначьте роли во вкладке "Role Mappings"
Назначение ролей:
Роли назначаются пользователям в Keycloak через вкладку "Role Mappings". Рекомендуется следовать принципу минимальных привилегий - предоставлять только необходимые роли.
Рекомендации по безопасности
  • Используйте сложные пароли длиной не менее 12 символов
  • Регулярно проверяйте и обновляйте права доступа пользователей
  • Ведите аудит действий пользователей через системные логи
Обработка ошибок авторизации

Система предоставляет детальную информацию об ошибках авторизации для упрощения диагностики проблем.

Типы ошибок:
# HTTP 401 Unauthorized
# Отсутствует или недействителен токен аутентификации
{
"error": "Unauthorized",
"message": "Authentication token is required",
"status": 401,
"path": "/sbrs-schema/list"
}
# HTTP 403 Forbidden
# Недостаточно прав для выполнения операции
{
"error": "Access Denied",
"message": "Access denied. Required role 'upload_schema' for operation '/sbrs-schema/upload'",
"status": 403,
"timestamp": "2024-01-15T10:30:00Z"
}
Мониторинг и аудит

Система ведет детальные логи всех операций аутентификации и авторизации для обеспечения безопасности и соответствия требованиям аудита.

Логирование событий:
2024-01-15 10:30:15.123 INFO [http-nio-8080-exec-1] c.s.u.JwtUtil : Operation 'schema-upload' performed by user: admin
2024-01-15 10:30:15.124 INFO [http-nio-8080-exec-1] c.s.u.RoleUtil : Operation 'schema-upload' attempted by user: admin with roles: [upload_schema, read_metrics]
2024-01-15 10:30:15.125 INFO [http-nio-8080-exec-1] c.s.c.SchemaController : Received schema-upload request - Correlation ID: req-123, Originator: soberis-frontend, Message ID: msg-456

2024-01-15 10:31:20.789 WARN [http-nio-8080-exec-2] c.s.c.JwtAuthenticationEntryPoint : Unauthorized access attempt to: /sbrs-schema/list - Full authentication is required to access this resource
2024-01-15 10:31:20.790 WARN [http-nio-8080-exec-2] c.s.u.RoleUtil : Operation 'schema-list' attempted by unknown user with roles: []
Лучшие практики:
  • Настройте короткое время жизни токенов (15-30 минут)
  • Мониторьте подозрительную активность через логи
Made on
Tilda