2010-09-27 7 views
15

Abbiamo un sito di social networking in cui le persone hanno contatti e vogliamo che siano integrati con XMPP. Al momento utilizziamo il server XMPP di ejabberd.Come integrare pienamente XMPP su un sito Web con utenti registrati

Ecco le mie domande:

  1. Come creare correttamente account? In questo momento, quello che sto pensando è la registrazione degli utenti sulla nostra app Web, chiameremmo uno script che eseguirà un comando ejabberd per creare un utente.

  2. Autenticazione utente. Al login dell'utente sul nostro sito web, l'utente verrebbe automaticamente connesso al sistema di chat. Come fai questo dal lato client con strophe.js? Come ho capito, è necessario fornire JID e password per l'autenticazione, quindi penso che all'accesso, ci sarebbe una chiamata ajax per ottenere la password dell'utente, quindi utilizzare il testo di risposta sulla chiamata di accesso di strophe.js. È sicuro? Ci sono altri modi per farlo?

  3. Registrazione di presenza. La nostra app Web ha un sistema di contatti, ma XMPP ha il suo modo di aggiungere contatti tramite l'abbonamento di presenza, giusto? Esempio: quando utente1 tenta di aggiungere utente2, verrà richiesta un'autorizzazione all'utente2 prima che l'utente1 possa essere un contatto dell'utente2. Ma dal momento che abbiamo già un sistema di contatti sulla nostra app Web, vogliamo ignorare questa autorizzazione di XMPP o sopprimerla e autorizzarci con uno script/comando quando user2 conferma utente1 come contatto sul nostro sito web. Non è ancora chiaro per me, ma un collega ha detto che questo è possibile sul modulo di ejabberd mod_admin_extra (un comando che creerà un abbonamento senza l'autorizzazione lato client). È possibile o devo manipolare manualmente il database di ejabberd con uno script (a condizione che mi sia trasferito dal db Mnesia predefinito a un altro db, ad esempio MySQL).

Grazie in anticipo.

risposta

8

Bene, ecco quello che abbiamo fatto:

1) Invece di autenticazione personalizzato/autenticazione esterna, creiamo account utente su XMPP, dopo un utente si registra.

2) La risposta a questo è l'allegato di sessione come ha sottolineato Julien. Abbiamo creato uno script PHP che creava la sessione e restituiva l'ID di sessione e il RID. Chiamato tramite AJAX all'accesso dell'utente (dopo che il documento è pronto).

3) Come ho detto in un commento sul post di Julien, abbiamo usato mod_admin_extra.Abbiamo accoppiato con mod_rest (w/c ti permette di inviare comandi stanzas/run stile REST) ​​per creare i roster. C'è un comando * add_rosteritem * su mod_admin_extra che viene chiamato ogni volta che gli utenti creano contatti sul nostro sito web.

+0

Usando il 'mod_admin_extra', gli utenti vengono avvisati quando viene creato un nuovo roster item? –

10

Noi (superfeedr) abbiamo un'app Web simile in cui XMPP è parte dell'applicazione.

La scelta che abbiamo fatto è quella di non replicare i dati dell'utente attraverso la memoria dell'app Web e il server XMPP. È possibile creare il proprio authentication mechanism utilizzando l'archivio dati dell'app Web con ejabberd, è piuttosto semplice. In questo modo, hai solo 1 posto dove vengono memorizzati i dati dell'utente e non devi creare utenti di ejabberd.

In questo modo, è anche possibile accedere ai propri utenti sull'app Web senza conoscere la propria password o persino memorizzarla in chiaro :). Il modo più semplice è eseguire l'autenticazione di sessione (tramite Bosh) sul server e passare l'id di sessione alla risposta HTML, come described here, da @metajack.

La terza parte potrebbe essere la più difficile, ma in realtà sono abbastanza sicuro che puoi ignorarla e non utilizzare i "roster" incorporati ... tuttavia potrebbe comportare la creazione di un componente personale (interno o esterno) .

+0

Ciao Julien, ho già letto utilizzando l'autenticazione esterna, ma suppongo di non aver letto più a fondo. All'inizio ero confuso con la tua risposta dato che su questo script PHP di esempio (http://www.ejabberd.im/files/efiles/check_mysql.php.txt) non c'è nulla che possa catturare la creazione dell'utente menzionata qui (https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/doc/dev.html#htoc8). Sull'elemento 3 sto ancora cercando nel modulo admin_extra, aggiornerò una volta trovato qualcosa. – putolaruan

+0

Oops. Prima di andare a dormire ieri sera ho finalmente capito perché non ho bisogno di creare utenti jabber con autenticazione esterna. D'oh. Ora l'unico blocco restante è la funzione roster .. – putolaruan

+0

Buono! Potrebbe essere necessario creare il proprio componente. Non è così difficile, quindi darei una possibilità. Puoi creare uno "interno" o esterno (consigliato), in qualsiasi lingua! –

Problemi correlati