2010-06-14 11 views
10

मेरे पास एक प्रश्न है। एक क्लाइंट जो मैंने हाल ही में कुछ काम कर रहा है, में विभिन्न लॉगिन तंत्र वाली वेबसाइटों की एक श्रृंखला है। वह धीरे-धीरे पर अपनी वेबसाइटों के लिए तंत्र (asp.net mvc में लिखा गया) पर माइग्रेट करने की तलाश में है।एकाधिक वेबसाइटें, एकल साइन-ऑन डिज़ाइन

  1. यह सुरक्षित (डुह)
  2. यह और अधिक अतिरिक्त उपयोगकर्ता गुण का समर्थन करने की जरूरत है हमेशा की तरह नाम के ऊपर हो गया है:

    मैं यहाँ मेरे विकल्प तलाश में हूं, इसलिए यहाँ आवश्यकताओं की एक सूची है , पता सामान (जैसे किसी उपयोगकर्ता के लिए धन या क्रेडिट)

  3. इसे अपनी सुविधा के लिए एक केंद्रीकृत उपयोगकर्ता प्रबंधन वेब कंसोल प्रदान करना है (मैं समझता हूं कि यह जो भी डिज़ाइन समाधान मैं चुनता हूं उसके शीर्ष पर यह एक छोटी परियोजना होगी)
  4. इसे मौजूदा डब्ल्यू के साथ एकीकृत करना है पूरे उत्पाद को फिर से इंजीनियरिंग के बिना ebsites (मैं समझता हूं कि यह वर्तमान उत्पाद कार्यान्वयन पर निर्भर करता है)।
  5. यह प्रयोक्ता को ईमेल जब वह पंजीकृत करता है से निपटने के लिए है
  6. यह जब वह क्लिक करता है मुझे लिंक को सक्रिय ईमेल में उपयोगकर्ता को सक्रिय करने के साथ सौदा किया है (मुझे लगता है कि 5 समझते हैं (जिससे उन्हें उनकी खाते को सक्रिय करने के लिए में) और 6 ईमेल templating प्रणाली के कुछ फार्म की आवश्यकता आवेदन प्रति विभिन्न ईमेल)

मैं एक पुस्तकालय रूपों प्रमाणीकरण को उजागर करता है कि जो कुछ भी तरीकों के लिए आवश्यक हैं के साथ मिलकर काम बनाने की सोच रहा था समर्थन करने के लिए (उदाहरण के लिए प्रवेश, लॉगआउट, सक्रिय करते हैं, आदि और ईमेल, पंजीकरण प्रसंस्करण इत्यादि से सक्रियण को लागू करने के लिए एक छोटी सी सेवापूर्ण सेवा

इस बात को ध्यान में रखते हुए कि इस प्रश्न को संक्षिप्त और बिंदु पर बनाने के लिए चीजों को लोड किया गया है, क्या यह एक अच्छी डिजाइन की तरह लगता है?

लेकिन यह एक बहुत ही आम समस्या की तरह दिखता है, इसलिए क्या कोई मौजूदा परियोजना नहीं है जिसका मैं उपयोग कर सकता हूं?

पढ़ने के लिए धन्यवाद।

उत्तर

3

यह समझने की मूल बात यह है कि आप एकाधिक डोमेन में मानक फॉर्म प्रमाणीकरण का उपयोग कर उपयोगकर्ता को प्रमाणीकृत नहीं कर सकते हैं। उदाहरण के लिए, dev.google.com और www.google.com अलग-अलग डोमेन हैं और यदि कोई उपयोगकर्ता dev.google.com में साइन इन करता है तो वह स्वचालित रूप से www.google.com में साइन इन नहीं होता है जब तक कि Google इसे सक्षम करने के लिए कुछ खास नहीं करता। ऐसा इसलिए है क्योंकि ब्राउज़र किसी अन्य वेबसाइट की कुकीज़ तक नहीं पहुंच सकता है।

वास्तव में काम पर क्रॉस डोमेन साइन करने का एकमात्र तरीका यह है कि यूआरएल की क्वेरी स्ट्रिंग में सत्र आईडी जैसे एक महत्वपूर्ण मूल्य शामिल है, जो वेबसाइट की जांच करता है और उपयोगकर्ता की प्रमाणीकरण कुकी सेट करता है। आप शायद अपने स्वयं के कस्टम कोड का एक छोटा सा उपयोग करके अपनी साइट के माध्यम से मैन्युअल रूप से ऐसा कर सकते हैं।

उदाहरण: http://www.example.com/autoLogin.aspx?sessionid=23232323

इस दृष्टिकोण का खतरा यह है कि किसी को पता है कि उपयोगकर्ता द्वारा इस्तेमाल किया गया था जानने और सत्र आईडी की जाँच करके एक उपयोगकर्ता सत्र धोखा कर सकता है। तो आपको यह सुनिश्चित करने की ज़रूरत है कि डोमेन पर उपयोगकर्ता को प्रमाणित करने के लिए उपयोग किया जाने वाला मान समय संवेदनशील और गतिशील है। इसे उपयोगकर्ता का उपयोगकर्ता आईडी या उपयोगकर्ता नाम या ऐसा कुछ न बनाएं।

अब, यदि साइट एक ही डोमेन पर हैं तो आप उन्हें एक ही मशीनकी दे सकते हैं और फिर एक ही डोमेन पर अलग-अलग वेबसाइटों के माध्यम से घूमते समय एक साइट पर पहले से लॉग इन किया गया उपयोगकर्ता लॉग आउट नहीं होगा।

+0

हमने इसे एक गाइड के माध्यम से किया और डेटाबेस में 3 मिनट की समाप्ति समय के साथ "autologin" तालिका है। यह माना जा रहा है कि सभी साइट एक साझा डेटाबेस तक पहुंच सकते हैं। – dvallejo

+0

मैंने प्रेरणा के लिए इस दृष्टिकोण का उपयोग किया और मैंने सेवा पर एक ही संकेत बनाया जो टोकन का उपयोग यह सुनिश्चित करने के लिए करता है कि अनुरोध को छेड़छाड़ नहीं किया गया है। इसे मशीन कुंजी की आवश्यकता नहीं है क्योंकि उपयोगकर्ता को लॉग इन सेवा में अग्रेषित किया जाता है (या तो वास्तविक शर्तों या पारदर्शी रूप से) और जब प्रमाणीकृत सफलतापूर्वक वापस यूआरएल पर वापस लौटाया जाता है जो एन्क्रिप्टेड टोकन प्राप्त करता है और लॉगिन सेवा को डिक्रिप्ट करने के लिए कहता है। यदि सफल हो तो उपयोगकर्ता जानकारी सत्र में संग्रहीत की जाती है (या कुकीज़ या जो भी भंडारण तंत्र का उपयोग किया जाता है) – Yannis

2

एएसपी.Net सदस्यता प्रदाता मॉडल में देखें।

नीचे एमएसडीएन पर संसाधनों के लिंक का एक छोटा सा नमूना है। यह आपकी सभी जरूरतों को पूरा करना चाहिए। अंतिम दो लिंक एसक्यूएल में नमूना कार्यान्वयन के लिए है। आप अपनी जरूरतों को पूरा करने के लिए आसानी से खेतों का विस्तार कर सकते हैं।

आपका दूसरा विकल्प OpenID/विंडोज लाइव या इसी तरह के साथ लॉगिन लागू करने के लिए है।

+0

मुझे एएसपी.Net सदस्यता प्रदाता पता है, लेकिन क्या मैंने परिदृश्य के लिए यह लचीला है? जैसे अंतर्निहित वेब ऐप में पुष्टिकरण आदि के लिए ईमेल भेजने का तरीका कैसा है? thx – Yannis

+0

ई-मेलिंग प्रदाता के शीर्ष पर बनाया जाना है। उदाहरण के लिए। http://www.c-sharpcorner.com/uploadfile/raj1979/passwordrecovery10032008150514pm/passwordrecovery.aspx में एएसपी.Net पीडब्ल्यू रिकवरी नियंत्रण है जो ई-मेलिंग करता है। –

+0

एसएसओ के लिए ओपनआईडी या विनोड्स लाइव का उपयोग करने के बारे में एक नोट जोड़ा गया। आपके परिदृश्य के आधार पर यह एक विकल्प हो सकता है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^