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