Должна ли межсерверная аутентификация включать пользователя, от имени которого делается запрос? - PullRequest
0 голосов
/ 03 октября 2019

Я собираюсь реализовать безопасность (используя 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 (например, он может удалять заказ пользователя, обновлять баланс пользователя и т. д.)

У меня есть проблемы:

  1. Правильно ли предположить, что Server2Server-JWT может иметь длительный срок службы (например, 10-20 минут) и может использоваться для многих запросов
  2. Предполагается, что Service_A и B размещены в AWS (докеры), защищен ли Server2Server-JWT в памяти этих сервисов? Что если (и как) украсть Server2Server-JWT ?
  3. Должен ли Service_A запрашивать новый Server2Server-JWT токен для каждого вызываемого пользователя Service_B (и, например, сохранить этот идентификатор пользователя в утверждениях)? Или можно предположить, что Server2Server-JWT безопасен в памяти и может быть повторно использован для любого пользовательского запроса в течение срока жизни маркера полного доступа Server2Server-JWT ?
  4. Является ли гибридный поток ответом на создание токена «сервер-сервер» от имени пользователя? Или это что-то еще?

Мой источник информации:

http://docs.identityserver.io/en/latest/topics/grant_types.html https://www.pluralsight.com/courses/asp-dotnet-core-oauth2-openid-connect-securing

1 Ответ

1 голос
/ 03 октября 2019

Я определенно могу ответить на последний вопрос и попробовать только с остальными.

Гибрид - это разновидность интерактивного потока , где у одного приложения есть и клиент, и серверчастей. Интерактивный означает, что пользователь проходит через портал IdP для проверки подлинности. Мобильные приложения обычно запускают код авторизации поток авторизации с расширением PKCE , которые в целом ведут себя почти как гибрид, где "клиент" - это мобильный браузер, а "сервер" - само приложение.

Нет места для API. Но ... вы можете посмотреть документацию Extension Grant . Позволяет реализовать Service Credentials от имени пользователя , именно то, что вы хотите, но ... вероятно, вам это не нужно с AWS.

Они предлагают Встроенные сетевые брандмауэрыв Amazon VPC и возможности брандмауэра веб-приложений в AWS WAF для создания частных сетей и управления доступом к вашим экземплярам и приложениям . Вместе с «Управляемым клиентом шифрованием при передаче через TLS через все сервисы» этого может быть более чем достаточно. Решение за вами.

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