Я разрабатываю платформу, которая содержит различные приложения, в основном:
- Приложение административного использования.
- Приложение клиентского использования.
- Некоторые мобильные приложения
Сначала я сосредотачиваюсь на делении вещей по поддоменам, например:
- https://login.mydomain.com => Login application for all users of the platform, (Uses IdentityServer 4, ASP CORE)
- https://root.mydomain.com => Administrative application (SPA)
- https://root.mydomain.com/api => API for administrative application (ASP Core)
- https://client1.mydomain.com => Client 1 Web Application 1 (SPA)
- https://client1.mydomain.com/api => API for client 1 web application (ASP Core)
- https://client2.mydomain.com => Client 2 Application (SPA)
- https://client2.mydomain.com/api => API for client 2 web application (ASP Core)
Принимая во внимание, что веб-приложение клиента 1 и клиента 2 одинаково (изменения доступа к данным), то же самое происходит с API.
Этот подход очень усложняет сертификаты https, перенаправления OAuth2, перенаправления IdentityServer и т. д.
, с помощью которых вы выбираете разделение приложений.в поддоменах и клиентах в маршрутах:
- https://login.mydomain.com => Login application for all users of the platform, (Uses IdentityServer 4, ASP CORE)
- https://root.mydomain.com => Administrative Application (SPA)
- https://root.mydomain.com/api => API for administrative application (ASP Core)
- https://app.mydomain.com/client1 => Client 1 Web Application (SPA)
- https://app.mydomain.com/client1/api => API for client 1 web application (ASP Core)
- https://app.mydomain.com/client2 => Client 2 Web Application (SPA)
- https://app.mydomain.com/client2/api => API for Client 2 web application (ASP Core)
Это привело меня к серии сомнений:
- Рекомендуется, чтобы у каждого клиента был свой URL API(client1 / api, client2 / api) или я могу просто использовать app.mydomain.com/api и определить клиента по заголовку HTTP? Я думал об этом таким образом, на случай, если в будущем я захочуположить экземпляры для некоторых очень крупных клиентов.
- Для приложений SPA, как я могу проверить правильность клиента?Должен ли я иметь приложение MVC на app.mydomain.com, которое проверяет, являются ли / client1 или / client2 действительными в моей базе данных, а затем возвращает SPA?Или это можно проверить прямо из JavaScript, вызвав API?
- Любой другой подход, кроме того, что я думал, или какую-либо рекомендацию принять во внимание?