Comment intégrer pleinement XMPP sur un site Web avec des utilisateurs enregistrés

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

  •  25-09-2019
  •  | 
  •  

Question

Nous avons un site de réseau social où les gens ont des contacts et nous souhaitons qu'il soit intégré à XMPP.Nous utilisons actuellement le serveur ejabberd XMPP.

Voici mes questions :

  1. Comment bien créer un compte ?À l'heure actuelle, ce que je pense concerne l'enregistrement des utilisateurs sur notre application Web, nous appellerions un script qui exécuterait une commande ejabberd pour créer un utilisateur.

  2. Authentification d'utilisateur.Lors de la connexion de l'utilisateur sur notre site Web, l'utilisateur sera automatiquement connecté au système de chat.Comment faire cela côté client avec strophe.js ?Si je comprends bien, vous devez fournir un JID et un mot de passe pour l'authentification. Je pense donc que lors de la connexion, il y aurait un appel ajax pour obtenir le mot de passe de l'utilisateur, puis utiliserait le texte de réponse lors de l'appel de connexion de strophe.js.Est-ce sécurisé ?Existe-t-il d'autres moyens de procéder ?

  3. Enregistrement de présence.Notre application Web dispose d'un système de contacts, mais XMPP a sa propre façon d'ajouter des contacts via un abonnement de présence, n'est-ce pas ?Exemple:Lorsque l'utilisateur 1 tente d'ajouter l'utilisateur 2, une autorisation sera demandée à l'utilisateur 2 avant que l'utilisateur 1 puisse être un contact de l'utilisateur 2.Mais comme nous avons déjà un système de contacts sur notre application Web, nous souhaitons contourner cette autorisation de XMPP ou la supprimer et simplement autoriser avec un script/commande lorsque l'utilisateur 2 confirme l'utilisateur 1 comme contact. sur notre site Internet.Ce n'est pas encore clair pour moi mais un collègue a dit que cela était possible sur le module mod_admin_extra d'ejabberd (une commande qui créera un abonnement sans avoir à obtenir une autorisation côté client).Est-ce possible ou dois-je manipuler la base de données ejabberd manuellement avec un script (à condition d'avoir transféré de la base de données Mnesia par défaut vers une autre base de données, par exemple MySQL).

Merci d'avance.

Était-ce utile?

La solution 2

Très bien, voici ce que nous avons fait :

1) Au lieu d'une authentification personnalisée/authentification externe, nous créons des comptes d'utilisateurs sur XMPP après l'inscription d'un utilisateur.

2) La réponse à cette question est l'attachement à la session comme l'a souligné Julien.Nous avons créé un script PHP qui créerait la session et renverrait l'ID de session et le RID.Appelé via AJAX lors de la connexion de l'utilisateur (une fois le document prêt).

3) Comme je l'ai dit dans un commentaire sur le post de Julien, nous avons utilisé mod_admin_extra.Nous avons couplé avec mod_rest (w/c vous permet d'envoyer des strophes/exécuter des commandes dans le style REST) ​​pour créer les listes.Il existe une commande *add_rosteritem* sur mod_admin_extra qui est appelée chaque fois que les utilisateurs créent des contacts sur notre site Web.

Autres conseils

( superfeedr ) ont une application web similaire où XMPP fait partie de l'application.

Le choix que nous avons fait est de ne pas reproduire les données de l'utilisateur à la fois accross le stockage d'applications Web et le serveur XMPP. Vous pouvez construire votre propre en utilisant la banque de données de l'application Web avec ejabberd, il est assez facile. De cette façon, vous avez seulement 1 seul endroit où les données utilisateur sont stockées et ne pas créer des utilisateurs ejabberd.

En faisant cela, vous pouvez également connecter vos utilisateurs sur l'application Web sans connaître son mot de passe ou même stocker dans :) clair. Le plus simple est de faire l'authentification de session (via Bosh) sur le serveur et transmettre l'identifiant de session à la réponse HTML, comme décrit ici , par @metajack.

La 3ème partie pourrait être la plus délicate, mais je suis en fait assez sûr que vous pouvez contourner cela et ne pas utiliser le intégré « de » ... mais tableaux de service, il peut impliquer la création de votre propre composant (interne ou externe).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top