WAMP.ws: как управлять безопасностью и конфиденциальностью?
Я использую WAMP.ws технические условия для проектирования публичных / частных чатов пользователей на моем веб-сайте.
Моя проблема возникает, когда я пытаюсь сохранить список всех подключенных пользователей. Что я мог сделать:
- Все пользователи подписываются на раздел "/ Контакты / соединения".
- когда пользователь подключается, он публикует сообщение "hello" с аргументом "user_id", сообщая другим пользователям, что он подключен.
--> но как я могу доверять пользователям ? Любой пользователь может отправить сообщение" Привет " со случайным аргумент "user_id".
Для меня сервер должен сделать некоторые проверки перед передачей сообщения. Но разве это в соответствии с ВАМПОМ.спецификации js ? Я читал, что опубликованное сообщение всегда передается сервером.
Другим решением может быть использование вызова RPC для подключения пользователя. На самом деле, я сделал это для аутентификации пользователей. Но может ли сервер сам транслировать событие в тему "/ контакты / соединения"? (после вызова RPC, а не после сообщения" опубликовать") Я читал об этом. События являются только прямым результатом "публикации" от клиента. Более того, это не помешает обычным пользователям отправлять событие trought "/contacts/connections" в теме, которая будет транслироваться сервером.
Я чувствую, что мои два решения (проверка опубликованных сообщений перед трансляцией или трансляция события сервером после вызова RPC) оба ломают WAMP.спецификации js. Или я ошибаюсь ?
Спасибо
1 ответ:
WAMP различает
- аутентификация
- авторизация
- валидация
Аутентификация устанавливает личность клиента WAMP на маршрутизаторе WAMP.
При использовании Autobahn|Python для запуска собственного маршрутизатора WAMP, здесь приведены многочисленные примеры, показывающие, как реализовать различные механизмы аутентификации.
При использовании перекладину.Ио (комплексная, производство готовых ПУВР маршрутизатор), механизмы аутентификации встроены (здесь ).
Authorization определяет, разрешено ли данному клиенту WAMP выполнять действие WAMP (например, публиковать или вызывать) для данного URI.
При использовании Autobahn|Python для запуска собственного маршрутизатора WAMP, здесь приведен пример, показывающий, как реализовать пользовательскую авторизацию.
Crossbar.io имеет встроенную статическую схему авторизации, а также позволяет регистрировать пользовательские процедуры WAMP для авторизация (здесь ).
Наконец, существуетпроверка , которая проверяет полезную нагрузку прикладного уровня событий или вызовов.
Вот пример для Autobahn / Python. Crossbar.io скоро разрешат регистрировать пользовательские процедуры WAMP для валидации.