Мне трудно выбрать подходящую / безопасную стратегию аутентификации для микросервисной архитектуры. Единственный пост SO, который я нашел по этой теме, это: Единый вход в микросервисной архитектуре.
Моя идея здесь состоит в том, чтобы иметь в каждой службе (например, аутентификация, обмен сообщениями, уведомление, профиль и т. Д.) Уникальную ссылку на каждого пользователя (вполне логично, тогда его user_id
) и возможность получить текущего пользователя, id
если он вошел в систему.
Из моих исследований я вижу две возможные стратегии:
1. Общая архитектура
В этой стратегии приложение аутентификации является одним из сервисов среди других. Но каждый сервис должен иметь возможность сделать преобразование session_id
=>, user_id
поэтому он должен быть очень простым. Вот почему я подумал о Redis, что бы хранить ключ: значение session_id:user_id
.
2. Архитектура брандмауэра
В этой стратегии хранилище сеансов на самом деле не имеет значения, так как оно обрабатывается только приложением для аутентификации. Затем они user_id
могут быть перенаправлены в другие службы. Я думал о Rails + Devise (+ Redis или mem-cached, или о хранилище файлов cookie и т. Д.), Но есть масса возможностей. Единственное, что имеет значение, это то, что Service X никогда не понадобится аутентифицировать пользователя.
Как эти два решения сравниваются с точки зрения:
- безопасность
- прочность
- масштабируемость
- простота использования
Или, может быть, вы предложите другое решение, которое я здесь не упомянул?
Мне больше нравится решение №1, но я не нашел особой реализации по умолчанию, которая гарантировала бы мне, что я иду в правильном направлении.
Я надеюсь, что мой вопрос не закрывается. Я действительно не знаю, где еще спросить это.
заранее спасибо