Я нахожусь в процессе реализации архитектуры микросервисов с единой конечной точкой входа для моих клиентов, шлюзом API. Это мой предложенный поток аутентификации:
1). Клиент (SPA) передает учетные данные пользователя в шлюз API, который затем передает их в мои службы авторизации / аутентификации.
2). Служба аутентификации проверяет учетные данные и выдает некоторую форму непрозрачного токена, который передается обратно клиенту через шлюз API.
3). Клиент отправляет токен в качестве заголовка на каждый запрос. Шлюз API обменивает этот непрозрачный токен на JWT с сервера аутентификации и сохраняет его в кэше. Затем JWT присоединяется ко всем нисходящим запросам, и мои внутренние микросервисы проверяют JWT (эмитент, аудитория).
Я сомневаюсь, если какой-либо протокол OAuth / OpenID поддерживает это из коробки или я должен был бы реализовать это сам. (Не желательно!).
Было бы лучшим решением, если бы служба аутентификации находилась за пределами шлюза API?
Заранее спасибо.