Мне сложно выбрать подходящую/безопасную стратегию аутентификации для архитектуры микросервиса. Единственная публикация SO, которую я нашел на эту тему, - это: Единый вход в архитектуру Microservice
Моя идея состоит в том, чтобы иметь в каждой службе (например, аутентификацию, обмен сообщениями, уведомление, профиль и т.д.) уникальную ссылку на каждого пользователя (вполне логично, затем его user_id) и возможность получить текущего пользователя id если вы вошли в систему.
Из моих исследований я вижу две возможные стратегии:
1. Общая архитектура

В этой стратегии приложение аутентификации является одним из сервисов среди других. Но каждая служба должна иметь возможность сделать преобразование session_id = > user_id, поэтому оно должно быть мертвым простым. Вот почему я подумал о Redis, который сохранит ключ: значение session_id:user_id.
2. Архитектура брандмауэра

В этой стратегии хранение сеанса не имеет особого значения, поскольку оно обрабатывается только приложением аутентификации. Затем user_id может быть перенаправлен другим службам. Я подумал о Rails + Devise (+ Redis или mem-кэшированном хранилище файлов cookie и т.д.), Но есть множество возможностей. Единственное, что имеет значение, - это то, что службе X никогда не понадобится аутентифицировать пользователя.
Как эти два решения сравниваются в терминах:
- Безопасность
- робастности
- Масштабируемость
- простота использования
Или, может быть, вы предложите другое решение, о котором я здесь не упоминал?
Мне нравится решение # 1 лучше, но не нашли много реализаций по умолчанию, которые бы защитили меня в том, что я иду в правильном направлении.
Надеюсь, мой вопрос не закрыт. Я не знаю, где еще спросить.
Заранее спасибо

