Мы пытаемся создать API-шлюз перед нашим приложением (мы можем разделить приложение на микро-сервисы как можно скорее), и мы сталкиваемся с некоторыми проблемами.
1 - различные типы API.
В нашем приложении есть два вида API, большинство из которых мы будем использовать сами (вход / выход пользователя, добавление / удаление новостей), мы называем их Self-used API
здесь. И некоторые из API будут разрешены для использования третьей стороной, мы называем их Open API
здесь.
Должны ли они все пройти через шлюз?
2 - другая аутентификация
Самостоятельно используемый API может потребовать, чтобы пользователь выполнил вход в систему или иметь соответствующие разрешения, Open API потребует, чтобы стороннее приложение получило ключ, который мы будем использовать для идентификации и ограничения частоты запросов.
Должны ли все виды аутентификации выполняться в шлюзе? Если да, то Самостоятельная аутентификация API-интерфейса связана с бизнесом, означает ли это, что этот шлюз API-интерфейса не может использоваться другим приложением?
Кроме того, сторонний разработчик создаст свое приложение и получит ключ назад, он также может обновить / удалить приложения (что-то вроде Google API Console).
Я не уверен, стоит ли это ставить в шлюзе или другом микро-сервисе. ИМО, я предпочитаю помещать эти функции в новую услугу, но проверка и ограничение скорости выполняются в шлюзе, то есть для каждого запроса шлюз должен запрашивать пользователя, ограничение скорости и другую информацию по ключу из службы, это снова сделает ворота связанными с бизнесом.