Надежная связь микросервисов с микросервисами - PullRequest
0 голосов
/ 04 марта 2020

Я хочу установить связь между различными микросервисами, но возникает проблема, заключающаяся в том, что микросервисы защищены токеном jwt, и я не могу найти способ отправить защищенный вызов на другой микросервис с первого микросервиса. Есть ли способ, которым я могу связаться с методом обслуживания напрямую, потому что, если я сделаю мой API открытым, он будет использован неправильно.

Или мне придется go через шлюз API, чтобы отправлять каждый запрос через шлюз API и сделать безопасную связь оттуда.

1 Ответ

0 голосов
/ 04 марта 2020

Все зависит от точных требований вашего проекта.

API шлюза обычно используется, чтобы скрыть сложность микросервиса от внешних пользователей, которые обычно имеют 1 конечную точку для общения.

Также шлюз может управлять безопасностью и аутентифицировать пользователя (что на самом деле делают многие компании).

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

Итак, вы знаете, что пользователь "Джон Смит" инициировал запрос.

И теперь, если вам нужно позвонить в другой микросервис, вы должны решить, (и снова ваше решение):

  1. Нужна ли вам вообще аутентификация (возможно, внутренняя связь не должна быть защищена между микросервисами (

  2. Если вы делаете аутентифицированный вызов из микросервиса A в микросервис B и поток был создан пользователем John Smith, который вызвал запрос к сервису A, вы должны решить, является ли семантика вызова:

    • Пользователь «John Smith» связывается со службой B, или ...
    • Служба A связывается со Службой B от имени пользователя John Smith. Это действительно важно для авторизации, если у вас есть какая-либо система разрешений.
  3. В терминах технической реализации обычно вы можете добавить заголовок JWT к запросу с требуемым токеном. Если запрос уже прошел проверку подлинности, и вам необходимо сгенерировать личность пользователя, вы можете просто добавить пару заголовков в запрос.

...