Я пишу игрушку для практических микросервисов и аутентификации на узлах (expressjs).Архитектура аутентификации микросервисов с паспортом.
У меня есть клиент-клиент, служба проверки подлинности и другие службы (они просто отвечают «Привет» до сих пор).
- Клиент будет размещен в CDN.
- Служба аутентификации прослушивает порт 5000 (например)
- Остальные службы прослушивают порт 6000-6100.
- У меня есть redis db для хранения информации о сеансе (маркер oauth, предоставленный твиттером).
- Mongodb, где хранится информация о приложении (не относится к этому вопросу).
Идея состоит в том, что клиент, не прошедший проверку подлинности, отправляется в службу авторизации, нажимая кнопку Twitter (SSO). Затем служба auth получает сгенерированный токен клятвы клятвы и устанавливает этот токен в хранилище redis. Затем токен доступен остальным службам, чтобы они знали, проверен ли запрос или нет, если он уже существует в магазине redis (если пользователь удаляет свою учетную запись, он также будет удален из магазина redis) , Я отправляю токен твитера туда и обратно от клиента к серверу после аутентификации.
Я считаю этот подход довольно прост (как другие используют Nginx прокси-сервер для проверки подлинности, но я не вижу никаких оснований для этого, за исключением, если услуги размещаются в разных доменах, но я не понимаю, это очень хорошо), поэтому я волнуюсь, что я что-то пропустил о безопасности, например.
Вопросы:
- Является ли это правильный подход?
- Можно ли делиться токеном Twitter (я так думаю)?
- Есть ли проблема безопасности, которую я не замечаю здесь?