كيفية دمج XMPP بالكامل على موقع ويب مع المستخدمين المسجلين

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

  •  25-09-2019
  •  | 
  •  

سؤال

لدينا موقع للتواصل الاجتماعي حيث يكون لدى الأشخاص اتصالات ونريد أن يتم دمجه مع XMPP. نستخدم حاليًا خادم Ejabberd XMPP.

ها هي أسئلتي:

  1. كيفية إنشاء حساب بشكل صحيح؟ في الوقت الحالي ، ما أفكر في تسجيل المستخدم على تطبيق الويب الخاص بنا ، كنا نسمي برنامج نصي يقوم بتنفيذ أمر Ejabberd لإنشاء مستخدم.

  2. مصادقة المستخدم. عند تسجيل الدخول إلى المستخدم على موقعنا ، سيتم تسجيل الدخول تلقائيًا على نظام الدردشة. كيف تفعل هذا على جانب العميل مع strophe.js؟ كما أفهم ، تحتاج إلى توفير JID وكلمة المرور للمصادقة ، لذلك أنا أفكر في تسجيل الدخول ، سيكون هناك مكالمة AJAX للحصول على كلمة مرور المستخدم ، ثم استخدم نص الاستجابة على مكالمة تسجيل الدخول strophe.js. هل هذا آمن؟ هل هناك طرق أخرى للقيام بذلك؟

  3. تسجيل التواجد. يحتوي تطبيق الويب الخاص بنا على نظام جهات اتصال ، ولكن لدى XMPP طريقته الخاصة لإضافة جهات الاتصال من خلال الاشتراك في التواجد ، أليس كذلك؟ مثال: عندما يحاول user1 إضافة user2 ، سيُطلب من التفويض إلى user2 قبل أن يكون user1 جهة اتصال لـ user2. ولكن نظرًا لأن لدينا بالفعل نظام جهات اتصال على تطبيق الويب الخاص بنا ، فإننا نريد تجاوز ترخيص XMPP هذا أو قمعه ونصحه فقط مع برنامج نصي/أمر عندما يؤكد user2 user1 كجهة اتصال على موقعنا على الويب. ليس من الواضح بالنسبة لي بعد ، لكن أحد الزملاء قال إن هذا ممكن على وحدة Ejabberd Mod_admin_extra (أمر سيخلق اشتراكًا دون الحاجة إلى إذن من جانب العميل). هل من الممكن أم أنني يجب أن أتعامل مع قاعدة بيانات ejabberd يدويًا باستخدام برنامج نصي (شريطة أن قمت بنقل من Mnesia DB الافتراضي إلى DB آخر ، على سبيل المثال).

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول 2

حسنًا ، هذا ما فعلناه:

1) بدلاً من المصادقة المخصصة/المصادقة الخارجية ، نقوم بإنشاء حسابات مستخدم على XMPP بعد سجلات المستخدم.

2) الجواب على هذا واحد هو مرفق الجلسة كما أشار جوليان. أنشأنا برنامج نصي PHP من شأنه أن ينشئ الجلسة وإرجاع معرف الجلسة والتخلص. اتصل من خلال AJAX على تسجيل الدخول إلى المستخدم (بعد أن يكون المستند جاهزًا).

3) كما قلت على تعليق على منشور جوليان ، استخدمنا mod_admin_extra. لقد اقترننا بـ mod_rest (يتيح لك W/C إرسال نمط REST على أوامر REST Stanzas/Run) لإنشاء القوائم. هناك أمر * add_rosteritem * على mod_admin_extra يتم استدعاؤه في كل مرة يقوم المستخدمون بإنشاء جهات اتصال على موقع الويب الخاص بنا.

نصائح أخرى

نحن (superfeedr) لديك تطبيق ويب مماثل حيث XMPP هو جزء من التطبيق.

الاختيار الذي اخترناه هو عدم تكرار بيانات المستخدم على كل من تخزين تطبيق الويب وخادم XMPP. يمكنك بناء خاصتك آلية المصادقة باستخدام متجر بيانات تطبيق الويب مع Ejabberd ، من السهل جدًا. وبهذه الطريقة ، ليس لديك سوى مكان واحد حيث يتم تخزين بيانات المستخدم وليس مضطرًا إلى إنشاء مستخدمي Ejabberd.

من خلال القيام بذلك ، يمكنك أيضًا تسجيل الدخول إلى المستخدمين على تطبيق الويب دون معرفة كلمة المرور الخاصة بهم أو حتى تخزينها في واضحة :). الطريقة السهلة هي القيام بمصادقة الجلسة (عبر BOSH) على الخادم ونقل معرف الجلسة إلى استجابة HTML ، مثل الموصوفة هنا, ، بواسطة @metajack.

قد يكون الجزء الثالث هو الأكثر صعوبة ، لكنني في الواقع متأكد تمامًا من أنه يمكنك تجاوز هذا وعدم استخدام "قوائم" مدمجة ... ومع ذلك قد يتضمن إنشاء مكونك الخاص (داخلي أو خارجي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top