Я собираюсь реализовать безопасность (используя Identity Server 4). У меня есть мобильное приложение (передний конец) и несколько микросервисов (задний).
Общий сценарий состоит в том, что User_John вызывает Service_A_API с использованием токена User-JWT (полученного с помощью устройстватечь). Чтобы Service_A мог выполнить запрос, ему необходимо получить доступ к некоторым данным из Service_B . Service_A вызывает Service_B с использованием Server2Server-JWT (получен с потоком учетных данных клиента).
Server2Server-JWT является токеном «полный доступ», позволяющим Service_A выполнять операции с любым пользователем на Service_B (например, он может удалять заказ пользователя, обновлять баланс пользователя и т. д.)
У меня есть проблемы:
- Правильно ли предположить, что Server2Server-JWT может иметь длительный срок службы (например, 10-20 минут) и может использоваться для многих запросов
- Предполагается, что Service_A и B размещены в AWS (докеры), защищен ли Server2Server-JWT в памяти этих сервисов? Что если (и как) украсть Server2Server-JWT ?
- Должен ли Service_A запрашивать новый Server2Server-JWT токен для каждого вызываемого пользователя Service_B (и, например, сохранить этот идентификатор пользователя в утверждениях)? Или можно предположить, что Server2Server-JWT безопасен в памяти и может быть повторно использован для любого пользовательского запроса в течение срока жизни маркера полного доступа Server2Server-JWT ?
- Является ли гибридный поток ответом на создание токена «сервер-сервер» от имени пользователя? Или это что-то еще?
Мой источник информации:
http://docs.identityserver.io/en/latest/topics/grant_types.html https://www.pluralsight.com/courses/asp-dotnet-core-oauth2-openid-connect-securing