SOA Сервис Дизайн / Аутентификация

Я довольно новичок в SOA и поэтому экспериментирую.

В настоящее время самой большой проблемой для меня является проверка подлинности, и сейчас я думаю о ней следующим образом:

Клиент отправляет какое-либо сообщение аутентификации в службу аутентификации / пользователя, эта служба запрашивает базу данных, и если пользователь найден и пароль действителен, он ответит идентификатором сеанса, этот идентификатор будет использоваться во всех дальнейших запросах этот клиент.

Мне кажется, это нормально, но я неНе зная, как мне следует обрабатывать запросы к другим службам, я подумал о трех разных подходах.

Каждая служба запрашивает службу аутентификации, является ли сеанс действительным и, если да, в каких ролях находится пользователь. Служба аутентификации просматривает базу данных и отвечает соответственно.

Служба аутентификации хранит всю информацию о сеансе в оперативной памяти и отвечает без запросов db туда и обратно.

Служба аутентификации отправляет авторизованное сообщение в esb, esb пересылает это авторизованное сообщение каждой службе, и эти службы кэшируют его. Никаких дальнейших запросов к службе аутентификации не потребуется. Если пользователь выходит из системы или его роли меняются, другое сообщение будет отправлено и обработано всеми службами.

Я думаю, что первый подход создает слишком большую нагрузку на службу аутентификации / БД, но требует меньше усилий для реализации.

Второе по-прежнему очень легко реализовать, но нагрузка на службу аутентификации остается почти такой же.

Третий вариант немного сложнее в реализации, но сокращает время отклика, так как не происходит никаких обращений к службе аутентификации. Однако, если будет слишком много информации о сеансе, этот подход просто потерпит неудачу, а масштабируемость вряд ли будет предоставлена.

Ответы на вопрос(2)

Ваш ответ на вопрос