Архитектура хранения прав доступа в микросервисах

Значится, имеется система, поделённая на модули, каждый из которых представляет из себя отдельный микро-сервис. Имеется микро-сервис идентификации/авторизации.

Я создал следующий алгоритм аутентификации: Поступает запрос в сервис -> происходит проверка по headers/cookie на наличие в локальной базе сервиса, в таблице с сессиями. Если сессия не найдена или просрочена (сессия существует 10 минут. После чего с помощью refreshKey продлевается), отправляется запрос в идентити-сервис. В ответ приходит подтверждение авторизации и данные о пользователе: id и его permission's.

Проблема следующая: как хранить permissions. Пока принял решение хранить просто в отдельной таблице локальной бд с сессиями. Проблема подхода в том что, если у пользователя, для данного идентити-сервиса изменят права, они у него в реальности изменятся только при следующем обновлении сессии. Т.е. до 10 минут после изменения прав, пользователь всё ещё сможет совершать действия.

Я понимаю что проблема в самом подходе. Как можно исправить это и иначе переписать?


Ответы (0 шт):