2010-09-27 13 views
15

हमारे पास एक सोशल नेटवर्किंग साइट है जहां लोगों के संपर्क हैं और हम इसे एक्सएमपीपी के साथ एकीकृत करना चाहते हैं। वर्तमान में हम ejabberd XMPP सर्वर का उपयोग करते हैं।पंजीकृत उपयोगकर्ताओं के साथ एक वेब साइट पर एक्सएमपीपी को पूरी तरह से एकीकृत कैसे करें

यहाँ मेरी प्रश्न हैं:

  1. कैसे ठीक से खाता बनाने के लिए? अभी, मैं जो सोच रहा हूं वह हमारे वेब ऐप पर उपयोगकर्ता पंजीकरण पर है, हम एक स्क्रिप्ट को कॉल करेंगे जो उपयोगकर्ता बनाने के लिए एक ejabberd कमांड निष्पादित करेगा।

  2. उपयोगकर्ता प्रमाणीकरण। हमारी वेबसाइट पर उपयोगकर्ता लॉगिन पर, उपयोगकर्ता चैट सिस्टम पर स्वचालित रूप से लॉग इन हो जाएगा। आप strophe.js के साथ क्लाइंट पक्ष पर यह कैसे करते हैं? जैसा कि मैं समझता हूं, आपको प्रमाणीकरण के लिए जेआईडी और पासवर्ड प्रदान करने की आवश्यकता है, इसलिए मैं सोच रहा हूं कि लॉगिन पर, उपयोगकर्ता का पासवर्ड प्राप्त करने के लिए एक अजाक्स कॉल होगा, फिर strophe.js 'लॉगिन कॉल पर प्रतिक्रिया टेक्स्ट का उपयोग करें। क्या यह सुरक्षित है? क्या ऐसा करने के अन्य तरीके हैं?

  3. उपस्थिति पंजीकरण। हमारे वेब ऐप में एक संपर्क प्रणाली है, लेकिन एक्सएमपीपी के पास उपस्थिति सदस्यता के माध्यम से संपर्क जोड़ने का अपना तरीका है, है ना? उदाहरण: जब उपयोगकर्ता 1 उपयोगकर्ता 2 जोड़ने का प्रयास करता है, तो उपयोगकर्ता 1 उपयोगकर्ता से संपर्क करने से पहले उपयोगकर्ता 2 से प्राधिकरण से पूछा जाएगा। लेकिन चूंकि हमारे पास पहले से ही हमारे वेब ऐप पर एक संपर्क प्रणाली है, इसलिए हम एक्सएमपीपी के इस प्राधिकरण को बाईपास करना चाहते हैं या इसे दबाना चाहते हैं और केवल एक स्क्रिप्ट/कमांड के साथ अधिकृत करना चाहते हैं जब उपयोगकर्ता 2 उपयोगकर्ता को पर हमारी वेबसाइट पर संपर्क के रूप में पुष्टि करता है। यह अभी तक मुझे स्पष्ट नहीं है लेकिन एक सहयोगी ने कहा कि यह ejabberd के मॉड्यूल mod_admin_extra पर संभव है (एक आदेश जो क्लाइंट-साइड प्राधिकरण के बिना सदस्यता बनाएगा)। क्या यह संभव है या मुझे स्क्रिप्ट के साथ मैन्युअल रूप से ejabberd डेटाबेस में हेरफेर करना है (बशर्ते मैंने डिफ़ॉल्ट मेनेसिया डीबी से दूसरे डीबी में स्थानांतरित किया हो, MySQL कहें)।

अग्रिम धन्यवाद।

उत्तर

8

ठीक है, यहाँ हम क्या किया है:

1) के बजाय कस्टम प्रमाणीकरण/बाहरी प्रमाणीकरण, हम एक उपयोगकर्ता रजिस्टरों के बाद XMPP पर उपयोगकर्ता खाते बनाने।

2) इसका उत्तर सत्र संलग्नक है क्योंकि जूलियन ने बताया। हमने एक PHP स्क्रिप्ट बनाई है जो सत्र बनायेगी और सत्र आईडी और आरआईडी वापस कर देगी। उपयोगकर्ता के लॉगिन पर दस्तावेज़ AJAX के माध्यम से बुलाया गया (दस्तावेज़ तैयार होने के बाद)।

3) जैसा कि मैंने जूलियन के पोस्ट पर एक टिप्पणी पर कहा, हमने mod_admin_extra का उपयोग किया।हम rosters बनाने के लिए mod_rest के साथ मिलकर (डब्ल्यू/सी आपको stanzas/रन कमांड आरईएसटी शैली भेजने की अनुमति देता है)। Mod_admin_extra पर एक * add_rosteritem * कमांड होता है जिसे हर बार उपयोगकर्ता हमारी वेबसाइट पर संपर्क बनाने के लिए बुलाया जाता है।

+0

'mod_admin_extra' का उपयोग करके, क्या उपयोगकर्ता को सूचित किया जाता है जब कोई नया रोस्टर आइटम बनाया जाता है? –

10

हम (superfeedr) एक समान वेब ऐप है जहां एक्सएमपीपी एप्लिकेशन का हिस्सा है।

हमने जो विकल्प बनाया है वह वेब ऐप स्टोरेज और एक्सएमपीपी सर्वर दोनों में उपयोगकर्ता डेटा को दोहराना नहीं है। आप ejabberd के साथ वेब ऐप के डेटा स्टोर का उपयोग करके अपना खुद का authentication mechanism बना सकते हैं, यह बहुत आसान है। इस तरह, आपके पास केवल एक ही स्थान है जहां उपयोगकर्ता डेटा संग्रहीत किया जाता है और ejabberd उपयोगकर्ताओं को बनाने की आवश्यकता नहीं होती है।

ऐसा करके, आप अपने उपयोगकर्ताओं को अपना पासवर्ड जानने के बिना या इसे स्पष्ट रूप से संग्रहीत किए बिना वेब ऐप पर भी लॉगिन कर सकते हैं :)। सर्वर पर सत्र प्रमाणीकरण (बोश के माध्यम से) करने का आसान तरीका है और @majajack द्वारा described here के रूप में, HTML प्रतिक्रिया पर सत्र आईडी पर पास करें।

तीसरा हिस्सा सबसे कठिन हो सकता है, लेकिन मुझे वास्तव में पूरा यकीन है कि आप इसे बाईपास कर सकते हैं और अंतर्निहित "रोस्टर" का उपयोग नहीं कर सकते हैं ... हालांकि इसमें आपका अपना घटक (आंतरिक या बाहरी) ।

+0

हाय जुलिएन, मैंने पहले से ही बाहरी प्रमाणीकरण का उपयोग कर पढ़ा है, लेकिन मुझे लगता है कि मैंने गहराई से पढ़ा नहीं है। इस नमूना PHP स्क्रिप्ट (http://www.ejabberd.im/files/efiles/check_mysql.php.txt) पर आपके उत्तर के साथ पहली बार उलझन में था, यहां कुछ भी ऐसा नहीं है जो यहां वर्णित उपयोगकर्ता निर्माण को पकड़ लेगा (https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/doc/dev.html#htoc8)। आइटम 3 पर मैं अभी भी admin_extra मॉड्यूल पर खोज रहा हूं, मुझे कुछ मिल जाने के बाद अपडेट हो जाएगा। – putolaruan

+0

ओह। कल रात सोने से पहले मुझे अंततः समझ में आया कि मुझे बाहरी प्रमाणीकरण वाले जैबर उपयोगकर्ताओं को बनाने की आवश्यकता क्यों नहीं है। डी 'ओह। अब केवल शेष अवरोधक रोस्टर सुविधा है .. – putolaruan

+0

अच्छा! आपको अपना खुद का घटक बनाना पड़ सकता है। यह मुश्किल नहीं है, इसलिए मैं इसे मौका दूंगा। योन किसी भी भाषा में "आंतरिक" एक, या एक बाहरी (अनुशंसित) बना सकता है! –