Если мы уже внедрили авторизацию в .Net Core Micro-service API Gateway, нужно ли нам внедрять также все микро-сервисы? - PullRequest
0 голосов
/ 11 февраля 2019

@ здесь, пожалуйста, помогите мне понять микросервисную аутентификацию с API-шлюзом.

Давайте рассмотрим пример - у меня есть 10 различных независимых развернутых микросервисов, и я реализовал API-шлюз для всех из них, то есть все запросы будутпройти через этот шлюз, а также вместо добавления авторизации / JWt в каждом микросервисе, который я добавил в API-шлюзе при таком подходе, все работает нормально, но мои сомнения и вопрос:

1 Что, если у конечного пользователя есть URLразвернутого микросервиса, и он пытается подключить его без шлюза (поскольку у меня нет места авторизации здесь, как мне это остановить, нужно ли добавлять одинаковую логику авторизации также в каждый микросервис, но это приведет к дублированию кода, тогда какой смысл использовать API-шлюз.

, дайте мне знать, если потребуется какой-либо другой ввод, надеясь, что я правильно объяснил свою проблему.

Спасибо
CP Variyani

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

API-шлюз используется для решения сквозных задач, таких как «авторизация», TLS и т. Д., А также для единой точки доступа к вашим услугам.

Возвращаясь к вашему вопросу: если ваши API-сервисы открыты для публичного доступа, вы должны их защитить.Обычно API-шлюз является единственной точкой, доступной для общего доступа, остальные службы находятся за брандмауэром (виртуальной сетью), доступ к которому возможен только через API-шлюз, если только у вас нет причин публично представлять свои службы.

например, если вы используете Kubernetes для развертывания своих служб, вы можете настроить доступ к своим службам только внутри кластера (службы имеют частные IP-адреса), и единственный способ получить к ним доступ - это шлюз API.Вам не нужно делать ничего особенного.Тем не менее, если по каким-либо причинам ваши сервисы предоставляются публично (имеют общедоступные IP-адреса), вам необходимо обеспечить их безопасность.Короче говоря, это зависит от того, как вы их развернули, и связаны ли с ними публичные IP-адреса.

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

0 голосов
/ 11 февраля 2019

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

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

...