質問する
9661 次
15

人々が連絡先を持っているソーシャル ネットワーキング サイトがあり、それを XMPP と統合したいと考えています。現在、ejabberd XMPP サーバーを使用しています。

ここに私の質問があります:

  1. アカウントを正しく作成するには?現在、私が考えているのは、Web アプリでのユーザー登録についてです。ユーザーを作成するために ejabberd コマンドを実行するスクリプトを呼び出します。

  2. ユーザ認証。ユーザーが当社の Web サイトにログインすると、ユーザーは自動的にチャット システムにログインします。strophe.js を使用してクライアント側でこれを行うにはどうすればよいですか? 私が理解しているように、認証にはJIDとパスワードを提供する必要があるため、ログイン時にユーザーのパスワードを取得するためのajax呼び出しがあり、strophe.jsのログイン呼び出しで応答テキストを使用すると考えています。これは安全ですか?これを行う他の方法はありますか?

  3. プレゼンス登録。私たちの Web アプリには連絡先システムがありますが、XMPP にはプレゼンス サブスクリプションを通じて連絡先を追加する独自の方法がありますよね? 例: user1 が user2 を追加しようとすると、user1 が user2 の連絡先になる前に、user2 に許可が求められます。しかし、Web アプリには既に連絡先システムがあるため、この XMPP の認証をバイパスするか、抑制して、user2 が user1 をWeb サイトの連絡先として確認したときに、スクリプト/コマンドで認証するだけにしたいと考えています。. 私にはまだはっきりしていませんが、ejabberd のモジュール mod_admin_extra (クライアント側の承認なしでサブスクリプションを作成するコマンド) でこれが可能であると同僚が言いました。それは可能ですか、またはスクリプトを使用して ejabberd データベースを手動で操作する必要がありますか (デフォルトの Mnesia データベースから別のデータベース、たとえば MySQL に転送した場合)。

前もって感謝します。

4

2 に答える 2

10

私たち(スーパーフィーダー)には、XMPPがアプリケーションの一部である同様のWebアプリがあります。

私たちが行った選択は、WebアプリストレージとXMPPサーバーの両方にユーザーデータを複製しないことです。ejabberdを使用してWebアプリのデータストアを使用して独自の認証メカニズムを構築できます。これは非常に簡単です。このように、ユーザーデータが保存される場所は1つだけであり、ejabberdユーザーを作成する必要はありません。

これを行うことで、ユーザーのパスワードを知らなくても、またはパスワードをクリアに保存しなくても、Webアプリにユーザーをログインさせることができます:)。簡単な方法は、サーバーで(Boshを介して)セッション認証を実行し、@ metajackによって、ここで説明するように、セッションIDをHTML応答に渡すことです。

3番目の部分は最も難しいかもしれませんが、実際にはこれをバイパスして、組み込みの「名簿」を使用しないことができると確信しています...ただし、独自のコンポーネント(内部または外部)を作成する必要がある場合があります。

于 2010-09-27T13:01:05.587 に答える
8

さて、これが私たちがしたことです:

1) カスタム認証/外部認証の代わりに、ユーザー登録後に XMPP でユーザー アカウントを作成します。

2) ジュリアンが指摘したように、これに対する答えはセッションのアタッチメントです。セッションを作成し、セッション ID と RID を返す PHP スクリプトを作成しました。ユーザーのログイン時に AJAX を介して呼び出されます (ドキュメントの準備ができた後)。

3) Julien の投稿のコメントで述べたように、mod_admin_extra を使用しました。mod_rest (w/c を使用すると、REST スタイルでスタンザ/実行コマンドを送信できます) と組み合わせて、名簿を作成しました。mod_admin_extra には、ユーザーが Web サイトで連絡先を作成するたびに呼び出される *add_rosteritem* コマンドがあります。

于 2010-11-02T07:00:24.830 に答える