- •Глава 1. Постановка задачи, формирование требований к системе 8
- •Глава 2. Проектирование архитектуры системы и описание логики взаимодействия ее компонентов 16
- •Глава 3. Разработка 31
- •Список сокращений и условных обозначений
- •Введение
- •Глава 1. Постановка задачи, формирование требований к системе
- •1.1 Функциональные и нефункциональные требования к системе
- •1.1.1 Функциональные требования
- •Глава 2. Проектирование архитектуры системы и описание логики взаимодействия ее компонентов
- •2.1 Системная архитектура
- •1.1.2 Нефункциональные требования
- •2.2 Взаимодействие с бэкендом
- •2.3 Интеграция с Access Control и pip Service
- •2.3.1 Конфигурация прав доступа в Access Control
- •2.3.2 Конфигурация расширенных прав доступа в pip Service
- •2.4 Микрофронтенд архитектура
- •2.4.1 Microservices ui Platform Framework
- •2.5 Архитектура данных
- •Глава 3. Разработка
- •3.1 Создание и регистрация Hiring фрагмента
- •3.2. Создание пользовательской роли hr Hiring
- •3.3. Маршрутизация
- •3.3.1 Hiring в глобальном меню Host Application
- •3.3.2 Маршрутизация в Hiring
- •3.4 Vault ldap-аутентификация
- •3.5 Примеры реализации функциональности компонентов системы
- •3.5.1 Создание Hiring Request’а
- •3.5.1.1 Отправка формы по нажатию кнопки “Submit”
- •3.5.2 Поиск Hiring Request’а по названию
- •3.5.3 Настройка видимости колонок таблиц дашбордов
- •3.5.4 Оправка нотификации “Send to Payroll Group”
- •3.5.5 Работа с документами
- •3.6 Выдача прав доступа
- •3.7 Модули проекта
- •3.8 Демонстрация интерфейса веб-приложения
- •3.9 Тестирование
- •Заключение
- •Список использованных источников
- •Приложение а
2.2 Взаимодействие с бэкендом
Взаимодействие Hiring микрофронтенда c бэкенд микросервисами (рисунок 3), как и в случае микрофронтенда Host Application, будет осуществляться по REST API с использованием спецификации JSON: API [4]. Использование JSON: API позволит указывать в запросах связи, использовать нормализацию, тем самым избегая дублирования данных, запрашивать не все поля ресурса, а также использовать готовые решения для сортировки и фильтрации.
Рисунок 3 – Связь Hiring микрофронтенда с бэкенд-микросервисами
OpenResty выступает качестве обратного прокси-сервера между клиентом и сервером бэкенд-микросервиса Public Gateway Microservice, выступающего в качестве API Gateway. В требующих авторизации запросах в заголовок запроса “Authorization”:” Bearer” размещается Access токен, валидируемый и проставляемый непосредственно перед проксированием посредством использования директив LUA в конфигурации сервера. Поскольку авторизация реализована в Host-Application, там же реализовано хранение и refresh Access токена. Токен хранится в приватной переменной класса, осуществляющего авторизацию, тем самым уменьшая риск CSRF и XSS уязвимостей. HTTP заголовки безопасности, такие как X-Frame-Options, X-Content-Type-Options и X-XSS-Protection, также проставляются в конфигурационном файле сервера с помощью использования LUA-директив. Сервер настроен для сжатия загружаемых файлов с помощью утилиты gzip.
2.3 Интеграция с Access Control и pip Service
В ходе разработки Hiring также будет произведена необходимая согласно NFR-5 работа с конфигурационными файлами двух бэкенд-микросервисов: Access Control и PIP Service.
Access Control реализует выдачу прав доступа пользовательским ролям на выполнение CRUD-операций, а также выполняет принятие решения о доступе. Это готовое корпоративное Attribute-Based Access Control решение [11], частично основанное на XACML стандарте, состоящее из бэкенд-микросервиса, реализующего PAP и PDP, а также Java-библиотеки, с помощью которой реализован PEP, обращающийся к PDP по REST API. В ходе выполнения ВКР будет произведена работа с конфигурационным JSON-файлом, в котором для всех необходимых объектов и их view будут созданы политики для новой пользовательской роли “HR-Hiring” и правила для этих политик (см. подробнее в подпункте 2.3.1 “Конфигурация прав доступа в Access Control”).
PIP Service микросервис реализует выдачу расширенных прав доступа. В ходе выполнения ВКР будет произведена работа с конфигурационным JSON-файлом микросервиса (см. подробнее в подпункте 2.3.1 “Конфигурация расширенных прав доступа в Pip Service").
Опишем пронумерованные на рисунке 4 процессы, которые будут достигнуты путем осуществления интеграции Hiring с Access Control и PIP Service:
Рисунок 4 – Интеграция с Access Control и PIP Service
Пользователь, совершающий запрос, уже аутентифицирован и авторизован.
Hiring Microfrontend выполняет запрос к Hiring Microservice, в заголовке запроса “Authentication: Bearer” передается выданный пользователю Access токен,
Hiring Microservice перехватывает запрос на доступ к ресурсу с помощью PEP, реализованного с помощью использования Java-библиотеки. PEP делает запрос решения к PDP, передавая ему следующие атрибуты: название микросервиса, из которого осуществляется запрос, название выполняемой операции, доменное имя пользователя, которое получает из payload Access токена, и название ресурса, к которомy будет осуществляться доступ,
PDP запрашивает у PAP политики доступа,
При необходимости получения расширенных прав доступа PDP аутентифицируется с помощью Identity Provider для получения M2M токена и дальнейшего обращения к PIP Service,
PDP обращается к PIP Service для получения дополнительной информации, например, при наличии у правила определенной политики условия,
PDP передает PEP ответ на запрос на доступ,
Hiring Microservice возвращает Hiring Microfrontend запрашиваемые данные в случае полученного разрешения в запросе на доступ.
