У меня есть куча микросервисов, которые доступны только снаружи через API-шлюз.
Мой API-шлюз настроен как ресурс OAuth и проверяет токен (проверяет подпись и т. Д.) Перед передачей запроса на одно или несколько микросервисов.
Хотя моим микросервисам нужен токен для проверки областей и утверждений, есть ли необходимость в том, чтобы этот сервис также проверял токен?
Кажется, это немного излишне, но я не могу найти никаких советов в Интернете об этом сценарии.
Достаточно ли хороша проверка токена на шлюзе API? Или лучше проверять это позже?
I cannot find any advice online about this scenario.
Потому что это зависит от нескольких факторов, которые варьируются от проекта к проекту. Вероятно, в большинстве разработок, претендующих на звание архитектуры MS, им это не нужно. Более того, в таких архитектурах должен быть сервер авторизации, который будет делать это вместо сервисов (и, конечно, вместо шлюза). Является ли сервер авторизации, который разрешает передачу запроса или нет.Ответы:
Если какие-либо внутренние вызовы могут обойти шлюз, либо проверьте токен в каждом микросервисе, либо заставьте все вызовы - внутренние и внешние - проходить через шлюз.
Лично я бы не стал доверять внутренним звонкам. Пусть они пройдут через шлюз даже до точки ограничения трафика с помощью правил брандмауэра. Знайте, кто с кем разговаривает и почему. Это помогает ограничить вашу поверхность атаки, если кто-нибудь проникнет в вашу сеть.
Это создает единую точку отказа, но этот риск может быть уменьшен за счет балансировки нагрузки на серверах и наличия резервных серверов под рукой в случае катастрофических проблем.
С другой стороны, если каждая служба проверяет токен и что-либо в процессе проверки изменяется, у вас есть N + 1 служб для обновления.
источник