मैं sled.com के साथ इसके माध्यम से गया हूँ। खाते बनाने और लॉगिन के लिए कई तृतीय-पक्ष खातों का समर्थन करने के संबंध में यहां कई समस्याएं हैं। उनमें से कुछ हैं:
- क्या आपको स्थानीय पासवर्ड और तृतीय-पक्ष लॉगिन दोनों का समर्थन करने की आवश्यकता है?
Sled.com के लिए, मैंने स्थानीय पासवर्ड को जोड़ने के छोटे मूल्य और पासवर्ड प्रविष्टि फॉर्म हासिल करने में अतिरिक्त लागत के कारण छोड़ने का फैसला किया है। पासवर्ड तोड़ने के लिए कई ज्ञात हमले हैं और यदि आप पासवर्ड पेश करने जा रहे हैं, तो आपको यह सुनिश्चित करना चाहिए कि उन्हें तोड़ना आसान नहीं है। आपको उन्हें लीक होने से रोकने के लिए एक तरह से हैश या कुछ इसी तरह के स्टोर करने की आवश्यकता है।
- कई तृतीय-पक्ष खातों का समर्थन करने के लिए आप कितना लचीलापन चाहते हैं?
ऐसा लगता है कि आपने पहले से ही तीन लॉगिन प्रदाताओं को चुना है: फेसबुक, ट्विटर और लिंक्डइन। यह बहुत अच्छा है क्योंकि इसका मतलब है कि आप OAuth का उपयोग कर रहे हैं और विश्वसनीय प्रदाताओं के एक अच्छी तरह से परिभाषित सेट के साथ काम कर रहे हैं। मैं OpenID का प्रशंसक नहीं हूं। शेष प्रश्न यह है कि क्या आपको एक ही प्रदाता से कई तृतीय-पक्ष खातों का समर्थन करने की आवश्यकता है (उदाहरण के लिए दो ट्विटर खातों से जुड़ा एक स्थानीय खाता)। मैं नहीं मान रहा हूं, लेकिन यदि आप ऐसा करते हैं, तो आपको अपने डेटा मॉडल में इसे समायोजित करने की आवश्यकता होगी।
स्लेज के लिए, हम फेसबुक, ट्विटर और याहू के साथ लॉगिन का समर्थन करते हैं! और प्रत्येक उपयोगकर्ता के खाते में प्रत्येक के लिए एक कुंजी संग्रहीत है: {"_id": "djdjd99dj", "याहू": "dj39djdj", ट्विटर: "3723828732", "फेसबुक": "12837287"}। हमने यह सुनिश्चित करने के लिए बाधाओं का एक समूह तैयार किया है कि प्रत्येक तृतीय-पक्ष खाते को केवल एक ही स्थानीय खाते से जोड़ा जा सकता है।
यदि आप एक ही तृतीय-पक्ष प्रदाता से कई खातों की अनुमति देने जा रहे हैं, तो आपको समर्थन देने के लिए सूचियों या अन्य संरचनाओं का उपयोग करने की आवश्यकता होगी, और उसके साथ, अन्य सभी प्रतिबंधों को विशिष्टता सुनिश्चित करने के लिए।
- कई खातों को कैसे लिंक करें?
पहली बार जब उपयोगकर्ता आपकी सेवा के लिए साइन-अप करता है, तो वे पहले तीसरे पक्ष के प्रदाता के पास जाते हैं और सत्यापित तृतीय-पक्ष आईडी के साथ वापस आते हैं। फिर आप उनके लिए एक स्थानीय खाता बनाते हैं और जो भी अन्य जानकारी चाहते हैं उसे एकत्र करते हैं। हम उनका ईमेल पता एकत्र करते हैं और उनसे एक स्थानीय उपयोगकर्ता नाम लेने के लिए भी कहते हैं (हम दूसरे प्रदाता से उनके मौजूदा उपयोगकर्ता नाम के साथ फ़ॉर्म को पूर्व-आबाद करने का प्रयास करते हैं)। बाद में खाते की वसूली के लिए स्थानीय पहचानकर्ता (ईमेल, उपयोगकर्ता नाम) का कुछ रूप होना बहुत महत्वपूर्ण है।
सर्वर जानता है कि यह पहली बार लॉगिन है यदि ब्राउज़र में किसी मौजूदा खाते के लिए एक सत्र कुकी (वैध या समाप्त) नहीं है, और जो तृतीय-पक्ष खाता उपयोग नहीं किया गया है। हम उपयोगकर्ता को सूचित करने का प्रयास करते हैं कि वे केवल लॉग-इन नहीं कर रहे हैं, लेकिन एक नया खाता बना रहे हैं ताकि यदि उनके पास पहले से ही एक खाता है, तो वे उम्मीद करते हैं कि वे अपने मौजूदा खाते के साथ विराम देंगे और लॉगिन करेंगे।
हम अतिरिक्त खातों को लिंक करने के लिए ठीक उसी प्रवाह का उपयोग करते हैं, लेकिन जब उपयोगकर्ता तीसरे पक्ष से वापस आता है, तो एक नए सत्र को लॉगिन क्रिया से जोड़ने के प्रयास के बीच अंतर करने के लिए एक वैध सत्र कुकी की उपस्थिति का उपयोग किया जाता है। हम केवल प्रत्येक प्रकार के एक तृतीय-पक्ष खाते की अनुमति देते हैं और यदि पहले से कोई लिंक है, तो कार्रवाई को रोकें। यह एक समस्या नहीं होनी चाहिए क्योंकि एक नया खाता लिंक करने का इंटरफ़ेस अक्षम है यदि आपके पास पहले से ही एक (प्रति प्रदाता) है, लेकिन सिर्फ मामले में।
यदि किसी उपयोगकर्ता ने एक नए तृतीय-पक्ष खाते को लिंक करने का प्रयास किया है जो पहले से ही एक स्थानीय खाते से जुड़ा हुआ है, तो आप उन्हें तुरंत पुष्टि करने के लिए कहेंगे कि वे दो खातों को मर्ज करना चाहते हैं (यह मानते हुए कि आप अपने डेटा सेट के साथ इस तरह के मर्ज को संभाल सकते हैं - अक्सर आसान कहा। किया हुआ)। आप उन्हें मर्ज करने का अनुरोध करने के लिए एक विशेष बटन भी प्रदान कर सकते हैं, लेकिन व्यवहार में, वे जो कर रहे हैं वह किसी अन्य खाते को लिंक कर रहा है।
यह एक बहुत ही सरल राज्य मशीन है। उपयोगकर्ता तृतीय-पक्ष खाता आईडी के साथ तीसरे पक्ष से वापस आता है। आपका डेटाबेस तीन राज्यों में से एक में हो सकता है:
- खाता स्थानीय खाते से जुड़ा हुआ है और कोई सत्र कुकी मौजूद नहीं है -> लॉगिन
- खाता स्थानीय खाते से जुड़ा हुआ है और एक सत्र कुकी मौजूद है -> मर्ज
- खाता किसी स्थानीय खाते से लिंक नहीं है और कोई सत्र कुकी मौजूद नहीं है -> साइनअप
खाता स्थानीय खाते से लिंक नहीं है और एक सत्र कुकी मौजूद है -> अतिरिक्त खाता लिंक करना
- तृतीय-पक्ष प्रदाताओं के साथ खाता पुनर्प्राप्ति कैसे करें?
यह अभी भी प्रायोगिक क्षेत्र है। मैंने इसके लिए एक पूर्ण यूएक्स नहीं देखा है क्योंकि अधिकांश सेवाएं तृतीय-पक्ष खातों के बगल में दोनों को एक स्थानीय पासवर्ड प्रदान करती हैं और इसलिए "मेरे पासवर्ड भूल गए" मामले पर ध्यान केंद्रित करें, बाकी सब कुछ जो गलत हो सकता है।
स्लेज के साथ, हमने "साइन इन करने में सहायता की आवश्यकता है" का उपयोग करने का विकल्प चुना है? और जब आप क्लिक करते हैं, तो उपयोगकर्ता से उनके ईमेल या उपयोगकर्ता नाम के लिए पूछें। हम इसे देखते हैं और यदि हमें एक मेल खाता मिलता है, तो उस उपयोगकर्ता को एक लिंक ईमेल करें जो स्वचालित रूप से सेवा में प्रवेश कर सकता है (एक समय के लिए अच्छा)। एक बार जब हम उन्हें सीधे खाते से लिंक करने वाले पृष्ठ पर ले जाते हैं, तो उन्हें बताएं कि उन्हें एक नज़र रखना चाहिए और संभावित रूप से अतिरिक्त खातों को लिंक करना चाहिए, और उन्हें तीसरे पक्ष के खातों को दिखाना चाहिए जो उन्होंने पहले ही लिंक किए हैं।