В настоящее время я пытаюсь реализовать систему уведомлений пользователей с использованием веб-сокетов через Crossbar/Autobahn. Я провел несколько тестов и просмотрел документацию, однако я не уверен, есть ли решение для работы следующего рабочего процесса:
- Пользователь входит в веб-приложение — это делается через JWT.
- Frontend устанавливает соединение через веб-сокет с работающим экземпляром
crossbar
. - Фронтенд пытается подписаться на URI специально для уведомлений пользователя: т. е.
com.example.notifications.user.23
илиcom.example.user.23.notifications'. Where
23` — это идентификатор пользователя. - JWT пользователя проверяется, чтобы узнать, разрешен ли пользователю доступ к подписке.
- Когда действие генерируется и вызывает уведомление, серверная часть публикует пользовательские URI.
Что касается шага 3, я не могу сказать, есть ли у текущих методов аутентификации поддержки то, что мне нужно. В идеале мне нужен метод аутентификации, который я могу настроить (чтобы внедрить аутентификатор JWT в Crossbar), который я могу применить к шаблону URI, но НЕ предоставлять доступ ко всему шаблону подписавшемуся пользователю. Это частично решается методами динамической аутентификации, но отсутствует вторая половина:
Например (мой идеальный рабочий процесс):
- Пользователь пытается подписаться на URI
com.example.user.23.notifications
. - URI соответствует
com.example.user..notifications
(шаблон подстановки в http://crossbar.io/docs/Pattern-Based-Subscriptions /а>) - Токен авторизации проверяется, и пользователю предоставляется доступ только
com.example.user.23.notifications
.
Достижимо ли вышеизложенное простым способом? Из того, что я могу сказать, это может быть возможно только в том случае, если я каким-то образом сгенерирую .crossbar/config.json
, который содержит перестановки URI всех идентификаторов пользователей... и автоматически создаст новую конфигурацию для каждого нового пользователя, что совершенно не является разумным решением.
Любая помощь приветствуется!