Совместное использование логина между Blazor WebServer и ASP.NET Core API - PullRequest
0 голосов
/ 08 октября 2019

Я создаю сервис-ориентированную систему для личного использования (плюс у нескольких друзей также может быть ограниченный доступ) - цель состоит в том, чтобы иметь панель управления для управления моими приложениями, работающими на разных компьютерах, таких как Raspberry Pis (и, возможно,расширен до VPS или несколько в будущем).

Сама архитектура довольно проста. Для аутентификации я хочу использовать AWS Cognito. Службы будут обмениваться данными с WebAPI (и, возможно, друг с другом), используя gRPC в рамках VPN, а панель управления будет обслуживаться серверной частью Blazor (может перейти к модели Blazor WASM Hosted, если я найду в этом необходимость). Каждый из процессов может или не может быть на той же машине, что и любой другой (в зависимости от цели). Сервер Blazor может работать, а может и не работать в VPN (возможно, я захочу перенести его на отдельный веб-хостинг позже).

Я создал простую диаграмму для его визуализации: enter image description here


Проблема связана с аутентификацией. Я хочу, чтобы серверная часть Blazor и API были отдельными процессами (сейчас они будут работать на одной машине, но, возможно, я захочу перенести их в другое место). В идеале аутентификация должна обрабатываться API, поэтому аутентификация не зависит от клиента, и API может использовать ее для проверки, может ли вошедший в систему пользователь выполнить действие , что само по себе просто.

Однако, Я хочу, чтобы сервер Blazor также использовал и проверял этот токен , чтобы определить, что отображать пользователю. Я хочу делать с наименьшим количеством возможных вызовов - в идеале, избегая запросов к API для каждого «должен я отображать это или нет?»Выбор.

Я мог бы легко сделать это, пожертвовав возможностью переместить API в другое место, и просто объединить Blazor Server и API Gateway в один проект. Для моей нынешней цели этого было бы достаточно, но это не идеальное решение, поэтому сначала я хочу посмотреть, как я могу достичь своего первоначального видения.


Как мне этого достичь (с минимальным количествомBlazor-сервер к запросам API)?

Я много гулял по решению, но пока нашел только примеры использования Blazor-сервера и API-интерфейса в качестве одного проекта или использования обращений к API на стороне клиента напрямую.

Заранее благодарим вас, ребята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...