стандартный, выглядит следующи одразом. Пользователь отправляет логин, пароль, запрашивает аутентефикацию + авторизацию = ему возврашется jwt токен доступа и рефреш + доступные доступы + инфа о пользователе.
Я думаю сделать так. Есть гетвей. Он отправляет запрос в сервис Авторизации с лоигном и паролем.
Сервис Авторизации делает запрос в сервис Профиль и по логину просит захешированный пароль (сервис профиль имеет свою БД с даннымт пользователей). сверяет пароли, если все ок (упрощенный флоу без 2й идентефикации), то берет список доступов для этого пользователя (у сервиса авторизации своя БД в ней хронятся список доступов + забаненные токены), генерит токины зашивая инфу с списком прав в них и отдает это гетвею.
Гетвей идет в сервис Профиль, просит у него данные клиента без хешированного пароля, гетвей всё это агрегирует в один объект и отдает на клиент. Вот
На сколько это кастыльно и как правльно?
На сколько вообще нормально, что гетвей ходит в несколько сервисов и агрегирует данные и отдает клиенту, а не тупо прокся?
На сколько нормально права зашивать в токен, чтобы потом дешифровать и понять что можно, а что нет?
На сколько нормально, если при последующих запросах jwt будет дешифроваться в гетвей и в соответствии с правами давать или не давать доступы к каким-то сервисам?
На сколько нормально, что у каждого сервиса своя БД и что сервис Авторизации сначала идет в сервис Профиль, и просит пароль, а потом гетвей уже идет в сервис Профиль, чтобы получить всю требуемую инфу по клеенту?
На сколько нормально вообще с авторизацией сразу отдавать инфу по клиенту или лучше отдельным запросом от клиента?
И второй еще флоу. Регистрация, по итогу которой у нас возвращается токены и доступы.
Приходит в гетвей запрос на регистрацию. Гетвей идет в сервис Профиль и создаёт пользователя (там еще будет подтверждление через СМС, но тут упращеннач модель, этол не упоминаю). Если создали успешно, то идет в сервис Авторизации, записывает установленные права для этого пользователя и получает токены в которые вшиваются доступные права. И после этого гетвей отправляет на клиент инфу.
Прошу ваше мнение. Очень выручите.
Может кто посоветует материал или книгу где можно было бы простыми словами быстренько понять как правльно строить микросервисную архитектуру и решать подобные вопросы.
Всем спасибо заранее.
я советую выкинуть микросервисную архитектуру и сделать модульную, потом если словишь нагрузку то выносить уже тяжелый модуль в мс, ну это касательно мсов, про саму проблему сходу ниче не понял, ща еще раз прочитаю
Да, + можно привтыкать с распределенными транзакциями. Это полюбому надо будет.
Обсуждают сегодня