Я думаю о способе иметь несколько приложений SPA (например, VueJS) для одного бэкэнда REST API (на основе микросервисов). Идея состоит в том, чтобы иметь один бэкэнд (REST API) для всех наших клиентов и несколько интерфейсов (по одному для каждой компании). Причина, по которой мы делаем это, заключается в том, что способ хранения данных одинаков для всех клиентов, но у всех них разные потребности в реституции (тип диаграмм) и корпоративном дизайне.
Серверная часть REST API будет отвечать за аутентификацию пользователей, доставку токена JWT (Auth MS) и обслуживание некоторых данных (Data MS). В Data MS хранятся значения для разных компаний. Пользователь и значение являются частью одной компании.
В бэкэнде REST API MS данных ограничивается только авторизованными пользователями. Он проверяет токен и проверяет (с помощью токена), есть ли у пользователя права на получение запрошенных данных (принадлежат ли значения компании-пользователю?).
Поскольку у всех наших клиентов разные потребности, разный корпоративный дизайн и т. Д. c ... Мы думали о создании нескольких SPA (по одному для каждой компании) для отображения данных (диаграммы и c .. .).
У меня вопрос, как мы можем ограничить доступ к какому-то SPA (client1.domain.com) только пользователям из компании «Client1»?
Если пользователь из «Client2» аутентифицируется, он не сможет получать данные из Data MS из-за своего токена. Но есть ли способ вообще не доставлять им токен и заблокировать аутентификацию? имя в токене. Если они разные, мы удаляем повар ie сразу после входа в систему
Создание серверной части для внешнего интерфейса для каждой компании, но звучит как плохая идея с точки зрения производительности и эффективности разработки. Использование
single-spa и выполнение «вспомогательного приложения», но мы не знаем, как это повлияет на производительность с 20 или 30 клиентами, например (означает 20 или 30 приложений ... ) и похоже, что он не был разработан для вышеуказанных целей (я имею в виду ограничения прав пользователей).
Кто-нибудь сталкивался с такой проблемой? Есть ли хороший образец / передовая практика для такого случая?