Я планирую сделать простой админ CP.Я разработчик PHP старой школы, где обычно все находится на одном огромном монолитном сервере, и концепция микросервисов не применима.
В моем следующем приложении я хотел бы иметь:
Express UI (Frontend) <----> REST / GraphQL API <-----> сервер БД
Идея состоит в том, чтобы максимально ограничить доступ к БД.Все запросы от пользователей будут отправляться только во внешний интерфейс, и API будет использоваться только для других серверов в моем решении.
Я настрою IP-фильтры между API и БД и, вероятно, между Frontend и API.Но меня беспокоит то, что я хочу, чтобы один админ создал продукт.Хотя этот пользователь будет проходить аутентификацию во внешнем интерфейсе с использованием сессий, мне нужно, чтобы запросы к API тоже были несколько аутентифицированы.Пока не обращая внимания на IP-фильтры, не хочу, чтобы кто-нибудь мог отправлять запросы REST в API.
У меня есть несколько идей, пожалуйста, дайте мне свое мнение:
совместное использование экспресс-сессии между API и внешним интерфейсом с использованием mongodb (вероятно, на еще одном сервере) - я вижу проблемы с задержкой
размещение службы API на том же сервере, что и внешний интерфейс, и использование redis для совместного использования сеансов -своего рода побеждает цель разделения микросервисов
при входе в систему, генерируя jsonwebtoken, который всегда находится между внешним интерфейсом и API для любого пользовательского действия - кража cookie будет проблемой, так как я могу только проверить пользователявошел в систему, но он не разрешил выполнение определенного действия
при входе в систему, отправив закрытый ключ администратору и заставив его подписать все запросы, отправленные в API - это похоже на перегрузку процессора
Есть ли какое-либо общеупотребительное решение, которое мне не хватает?Является ли разделение внешнего интерфейса и API избыточным, или это хорошая практика?Я мог бы легко объединить 2 и общаться с БД напрямую из внешнего интерфейса, а затем я могу управлять всем с помощью сессий, как с PHP.
Спасибо за любые входные данные!Приветствия