WAMP.WS: Как управлять безопасностью и конфиденциальностью?

StackOverflow https://stackoverflow.com/questions/19845664

Вопрос

Я использую спецификации WAMP.WS для разработки публичных/частных чат -чатов на своем веб -сайте.

Моя проблема возникает, когда я стараюсь соблюдать список всех подключенных пользователей. Что я мог сделать:

  1. Все пользователи подписываются на тему "/Contacts/Connections".
  2. Когда пользователь подключается, он публикует сообщение «Hello» с аргументом «user_id», сообщая другим пользователям, что он подключен.

-> Но как я могу доверять пользователям? Любой пользователь может отправить сообщение «Hello» со случайным аргументом «user_id».

Для меня сервер должен сделать некоторые чеки, прежде чем транслировать сообщение. Но соответствует ли это спецификациями WAMP.JS? Я читал, что опубликованное сообщение всегда транслируется сервером.

Другим решением может быть использование вызова RPC для подключения пользователя. На самом деле, я сделал это для аутентификации пользователей. Но может ли сервер транслировать событие в тему «/контакты/подключения» сами по себе? (После вызова RPC, а не после «публикации»), я прочитал, что событие является лишь прямым результатом «публикации» от клиента. Более того, это не помешает постоянным пользователям отправлять тему для событий «/контакты/соединения», которая будет транслироваться сервером.

Я чувствую, что мои два решения (проверяющие опубликованные сообщения перед вещанием или трансляция события на сервере после вызова RPC) оба разрывают спецификации WAMP.JS. Я ошибаюсь ?

Спасибо

Это было полезно?

Решение

WAMP различает между

  1. Аутентификация
  2. Авторизация
  3. Проверка

Аутентификация Устанавливает личность клиента WAMP на маршрутизаторе WAMP.

Когда используешь Autobahn | Python Чтобы бросить свой собственный маршрутизатор WAMP, здесь Являются ли несколько примеров, показывающих, как реализовать различные механизмы аутентификации.

Когда используешь Crossbar.io (Интегрированный производственный маршрутизатор WAMP), встроенные механизмы аутентификации (здесь).


Авторизация Определяет, разрешено ли данному клиенту WAMP выполнять действие WAMP (например, публикация или вызов) на данном URI.

Когда используешь Autobahn | Python Чтобы бросить свой собственный маршрутизатор WAMP, здесь это пример, показывающий, как реализовать пользовательскую авторизацию.

Crossbar.io имеет схему созданной статической авторизации, а также позволяет зарегистрировать пользовательские процедуры WAMP для авторизации (здесь).


Наконец, есть Проверка, который проверяет полезную нагрузку на уровня приложения событий или вызовов.

Здесь это пример для Autobahn | Python. Crossbar.io скоро разрешит зарегистрировать пользовательские процедуры WAMP для проверки.


Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top