у вас очень широкий вопрос об архитектурной реализации для вашего конкретного c организационного случая.
Я бы порекомендовал вам следовать приведенной ниже модели управления пользователями, которая заботится о Simple API для аутентификации, регистрации и управления пользователями с использованием NodeJS + комбинация Koa + Passport.
Вы можете развернуть API в Heroku и протестировать API с помощью Postman.
Вы можете использовать промежуточное программное обеспечение NodeJS Global Error Handler, и вы этого не сделаете необходимо реализовать любой избыточный локальный обработчик ошибок.
Рекомендуется использовать промежуточное ПО JWT узла, которое проверяет токен JWT, полученный в запросе http от клиента, действительным, прежде чем разрешить доступ к API, если токен недействительно, клиенту отправляется ответ «401 Unauthorized». Эту авторизацию JWT API можно выполнить на уровне вашего шлюза непосредственно перед вашими микросервисами.
Наконец, пользовательская служба Koa + Passport содержит основные бизнес-логики c для аутентификации пользователей и использует Koa-Redis для управления сеансами в узле api, она инкапсулирует все взаимодействия с пользовательской моделью mon goose и предоставляет простой набор методов, которые используются контроллером пользователей.
Moroever Koa + Passport поддерживает единый вход с OpenID и OAuth, который отвечает на ваш другой вопрос, связанный с SSO.
Здесь вы также можете обнаружить, что KOA лучше всего подходит для микросервисов, поскольку вы уже выбрали тот же. Наложение аутентификации + управление пользователями с использованием той же инфраструктуры окажется очень универсальным и расширяемым.
https://mherman.org/blog/user-authentication-with-passport-and-koa/
Чтобы подключиться к внешнему поставщику единого входа, вы можно использовать клиентский API nodejs oauth2 следующим образом, что позволяет подключить бэкэнд вашего узла для подключения к внешнему серверу единого входа.
https://www.npmjs.com/package/client-oauth2
для единого входа используя Google / Gmail, лучше всего использовать единый вход на основе SAML, предоставляемый google.
Язык разметки утверждений безопасности (SAML) - это основанная на XML структура для аутентификации и авторизации между двумя объектами: поставщиком услуг и Поставщик удостоверений. Поставщик услуг соглашается доверять поставщику идентификационных данных аутентификацию пользователей. В свою очередь поставщик удостоверений генерирует утверждение аутентификации, которое указывает, что пользователь прошел аутентификацию.
SAML - это стандартный формат единого входа (SSO). Информация аутентификации передается через документы с цифровой подписью XML. Это сложная реализация единого входа (SSO), которая обеспечивает бесшовную аутентификацию, в основном между предприятиями и предприятиями.
ниже ссылка содержит подробные сведения о настройке службы SAML / SSO в google из вашего приложения.
https://support.google.com/a/answer/6087519?hl=en