Pregunta

Estoy usando las especificaciones de WAMP.WS para diseñar salas de chat de usuarios públicos/privados en mi sitio web.

Mi problema viene cuando intento mantener una lista de todos los usuarios conectados. Lo que podría hacer:

  1. Todos los usuarios se suscriben al tema "/contactos/conexiones".
  2. Cuando un usuario se conecta, publica un mensaje de "hola" con un argumento "user_id", diciéndole a otros usuarios que está conectado.

-> Pero, ¿cómo puedo confiar en los usuarios? Cualquier usuario podría enviar un mensaje de "hola" con un argumento aleatorio "user_id".

Para mí, el servidor tiene que hacer algunas comprobaciones antes de transmitir el mensaje. ¿Pero está de acuerdo con las especificaciones de WAMP.JS? He leído que el servidor siempre transmite un mensaje publicado.

Otra solución podría ser usar una llamada RPC para conectar a un usuario. En realidad, lo hice para autenticar a los usuarios. Pero, ¿puede el servidor transmitir un evento al tema "/contactos/conexiones" por sí mismo? (Después de una llamada de RPC, no después del mensaje "Publicar") He leído que el evento es solo el resultado directo de una "publicación" del cliente. Además, esto no evitaría que los usuarios regulares envíen un tema de truco "/contactos/conexiones", que será transmitido por el servidor.

Siento que mis dos soluciones (verificar los mensajes publicados antes de transmitir, o transmitir un evento por servidor después de una llamada RPC) ambas especificaciones Wamp.js. Me equivoco ?

Gracias

¿Fue útil?

Solución

Wamp diferencia entre

  1. Autenticación
  2. Autorización
  3. Validación

Autenticación Establece la identidad de un cliente WAMP en un enrutador WAMP.

Cuando usas Autobahn | Python Para enrollar tu propio enrutador Wamp, aquí son múltiples ejemplos que muestran cómo implementar diferentes mecanismos de autenticación.

Cuando usas Crosspar.io (un enrutador de wamp de producción integrado), los mecanismos de autenticación vienen incorporados (aquí).


Autorización Determina si un cliente WAMP dado puede realizar una acción WAMP (como Publish o Call) en un URI determinado.

Cuando usas Autobahn | Python Para enrollar tu propio enrutador Wamp, aquí es un ejemplo que muestra cómo implementar la autorización personalizada.

CrossBar.io tiene un esquema de autorización estática Builtin, así como permite registrar procedimientos WAMP personalizados para la autorización (aquí).


Finalmente, hay Validación, que verifica la carga útil del nivel de aplicación de eventos o llamadas.

Aquí es un ejemplo para Autobahn | Python. Crossbar.io pronto permitirá registrar procedimientos de WAMP personalizados para la validación.


Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top