Аутентификация между микросервисами: Amazon API Gateway - PullRequest
1 голос
/ 11 декабря 2019

У меня есть несколько микросервисов (Springboot), которые я разместил на AWS. Например, предположим, что Service1 и Service2 - это две микро-службы. Service1 - это микросервис, доступ к которому осуществляется через веб-интерфейс и мобильное приложение. Сервис1 вызывает Сервис2. Service2 полностью внутренняя.

У меня настроен Amazon API Gateway, который расположен напротив Service1. А у меня Аутентификация (Oauth) настроена с использованием Cognito.

Все это работает. При вызове из внешнего интерфейса / приложения запрос должен пройти проверку подлинности с помощью шлюза API, прежде чем он достигнет Service1.

Но мой вопрос: если Service1 необходимо установить связь с Service2, какой тип аутентификации лучше всего подходит, учитывая, что я использую AWS

  1. Могу ли я повторно использовать сгенерированный токен? по API-шлюзу. Так что Service1 может переслать его Service2 в своем запросе и каким-то образом Service2 проверяет это с помощью шлюза. Является ли это возможным? Если да, это хорошая идея?

  2. В некоторых случаях Service1 связывается с Service2 без запроса (cronjob) от внешнего интерфейса / приложения. В этом случае связь не проходит через API-шлюз, следовательно, токен не будет сгенерирован. Как я должен иметь дело с делом.

Я не хочу вводить аутентификацию Oauth для аутентификации между двумя внутренними микроуслугами. Я чувствую, что это немного излишне. Есть ли лучший подход?

Ответы [ 2 ]

1 голос
/ 11 декабря 2019

Один вариант, который работает хорошо, - это иметь 2 уровня API:

  • API точки входа открыты для внешнего мира и защищены через OAuth
  • Микросервисы не защищены через OAuthи работать в заблокированном виртуальном частном облаке, которое могут вызывать только API-интерфейсы Entry Point

Например: * Интерфейс онлайн-продаж вызывает API-интерфейс онлайн-продаж * API-интерфейс онлайн-продаж вызывает микросервисы заказов и клиентов

Пользовательский контекст из токена доступа OAuth может быть передан из API точек входа в микросервисы - или сам токен может быть перенаправлен

Это также хорошо работает и позволяет избежать слишком большого количества вызовов Cognito.

0 голосов
/ 11 декабря 2019

2 уровня API - хорошая идея, как отметил Гэри. Также да, я думаю, связь между службами должна быть защищена. Поскольку другие службы будут работать в un в заблокированном виртуальном частном облаке, вы можете просто использовать basic auth в службах. Вот как мы поступаем в нашей организации.

...