Я изучаю базовую сервис-ориентированную архитектуру, и мне интересно, как лучше всего обрабатывать аутентификацию пользователей во всех службах.
В качестве очень простого примера предположим, что у нас есть приложение для блога, которое обращается к двум другим службам:
- Служба пользователя/авторизации для хранения пользовательских данных и обмена учетными данными для токена доступа
- Служба сообщений для управления почтовыми данными
Скажем, пользователь приложения пытается удалить конкретный пост и что разрешено делать это только пользователям с ролью "admin".
Необходимо выполнить следующие запросы:
-
app → auth
Аутентификация текущего пользователя (через какой-то токен). Если токен истек, приложение может перенаправить пользователя в форму входа и т.д.
-
app → posts
Удалить сообщение.
-
posts → auth
Прежде чем сообщение будет удалено, почтовой службе необходимо убедиться, что у запрашивающего пользователя есть разрешение на это. Аутентификация текущего пользователя (через токен) и убедитесь, что у них есть роль "admin".
Это слишком простой пример, но мне любопытно, как люди работают с auth во всех своих сервисах. Кажется вероятным, что для авторизации запроса каждой службе потребуется отдельный вызов службы аутентификации. Это так? Есть ли более эффективные способы обработки auth в этом виде SOA?
Спасибо!