Pergunta

Estou usando as especificações do Wamp.WS para projetar salas de bate -papo público/privado no meu site.

Meu problema vem quando tento manter uma lista de todos os usuários conectados. O que eu poderia fazer:

  1. Todos os usuários assinam o tópico "/contatos/conexões".
  2. Quando um usuário se conecta, ele publica uma mensagem "Hello" com um argumento "user_id", dizendo a outros usuários que ele está conectado.

-> Mas como posso confiar nos usuários? Qualquer usuário pode enviar uma mensagem "Hello" com um argumento "user_id" aleatório.

Para mim, o servidor precisa fazer algumas verificações antes de transmitir a mensagem. Mas está de acordo com as especificações do wamp.js? Eu li que uma mensagem publicada é sempre transmitida pelo servidor.

Outra solução pode ser usar uma chamada RPC para conectar um usuário. Na verdade, eu fiz isso por autenticar usuários. Mas o servidor pode transmitir um evento para tópico "/contatos/conexões" por si só? (Após uma chamada RPC, não após a mensagem "publicar"), li que o evento é apenas o resultado direto de uma "publicação" do cliente. Além disso, isso não impediria que os usuários regulares enviassem o tópico "/contatos/conexões" do evento, que será transmitido pelo servidor.

Sinto que minhas duas soluções (verificando mensagens publicadas antes de transmitir ou transmitir um evento por servidor após uma chamada de RPC) quebram as especificações do Wamp.js. Estou errado ?

obrigada

Foi útil?

Solução

Wamp diferencia entre

  1. Autenticação
  2. Autorização
  3. Validação

Autenticação Estabelece a identidade de um cliente WAMP em um roteador WAMP.

Ao usar Autobahn | Python Para rolar seu próprio roteador wamp, aqui são vários exemplos que mostram como implementar diferentes mecanismos de autenticação.

Ao usar Crossbar.io (Um roteador Wamp Proady Integrated Production Ready), os mecanismos de autenticação são incorporados (aqui).


Autorização Determina se um determinado cliente WAMP tem permissão para executar uma ação WAMP (como publicar ou ligar) em um determinado URI.

Ao usar Autobahn | Python Para rolar seu próprio roteador wamp, aqui é um exemplo mostrando como implementar autorização personalizada.

Crossbar.io possui um esquema de autorização estática incorporada e permite registrar procedimentos WAMP personalizados para autorização (aqui).


Finalmente, existe Validação, que verifica a carga útil do nível do aplicativo de eventos ou chamadas.

Aqui é um exemplo para Autobahn | Python. Crossbar.io em breve permitirá registrar procedimentos WAMP personalizados para validação.


Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top