2010-07-10 15 views
29

मैं एक एएसपी.नेट एमवीसी साइट बना रहा हूं जहां मैं ओपनआईडी लॉगिन को लागू करने के लिए DotNetOpenAuth का उपयोग करना चाहता हूं (मैं उपयोगकर्ता नाम/पासवर्ड-आधारित लॉगिन को पूरी तरह से छोड़ रहा हूं)।उपयोगकर्ता भूमिकाओं और अन्य सदस्यता प्रदाता के साथ ओपनआईडी (डॉटनेट ओपेनएथ के माध्यम से) का उपयोग

अब तक, मैं एएसपी.NET सदस्यता प्रदाता के साथ डिफ़ॉल्ट उपयोगकर्ता नाम/पासवर्ड सिस्टम के लिए अपना कोड लिख रहा हूं, भूमिका प्रणाली, प्रोफाइल सिस्टम और मूल पंजीकरण प्रणाली का उपयोग कर रहा हूं। अब, ओपनआईडी में माइग्रेशन में, मैं कुछ मुद्दों पर विचार कर रहा हूं, विशेष रूप से एएसपी.NET सदस्यता प्रदाता द्वारा प्रदान किए गए सदस्यता नियंत्रणों के साथ इंटरफेसिंग के साथ।

DotNetOpenAuth MVC नमूना को देखते हुए, मुझे लगता है कि FormsAuthentication सिस्टम को केवल उसका संदर्भ AuthCookie बनाने के लिए कर रहे हैं और बाद में FormsAuthentication.SignOut() कॉल करने के लिए देखते हैं। इस प्रकार, मुझे यकीन नहीं है कि मैं इस ओपनआईडी सिस्टम के साथ एएसपी.NET सदस्यता प्रदाता कार्यों का उपयोग कर सकता हूं, हालांकि नमूना कोड का एक और हिस्सा User.Identity.IsAuthenticated पर कॉल करता है।


विल ASP.NET सदस्यता प्रदाता के साथ इस OpenID सिस्टम इंटरफेस? यदि नहीं, तो क्या मैं इसे किसी भी तरह ठीक कर सकता हूं?

यदि उपर्युक्त पूरी तरह असंभव है, तो मुझे लगता है कि मेरा अगला कार्यवाही केवल पर होगा, अपने स्वयं के डेटाबेस तालिकाओं को रोल करें और मैन्युअल रूप से कोड को मेरे खाता नियंत्रक से उपयोग करने के लिए लिखें। मैंने देखा कि Stack Exchange Data Explorer इस दृष्टिकोण को लेता है, लेकिन क्या यह कार्रवाई का सही तरीका होगा?


संपादित करें: बस सुनिश्चित करें कि मैं सही शब्दावली का उपयोग कर रहा, "ASP.NET सदस्यता प्रदाता" से हो सकता है, मैं प्रदाता aspnet_regsql.exe उपकरण द्वारा उत्पन्न तालिकाओं का उपयोग करता है मतलब है।

उत्तर

40

वे सिर्फ ठीक काम करेंगे, लेकिन आपको कुछ कस्टम काम करने की आवश्यकता होगी।

मैं अतीत में क्या किया यह है:

सबसे पहले मैं तुम्हें openid कार्यान्वयन काम कर रहे एक अर्द्ध है, जिसका अर्थ है आप लेकिन एक OpenID प्रदाता से वास्तविक पहचान प्राप्त बस नहीं यकीन है कि क्या के साथ क्या कर सकते हैं यह सोचते हैं रहा हूँ यह।

मैं प्रमाणीकरण के लिए इसका उपयोग किए बिना भी फॉर्म एंड प्रमाणीकरण का उपयोग बैक एंड के रूप में करना जारी रखता हूं।

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

पर कॉल करेंगे जब कोई आपकी साइट पर ओपनिड जांच के साथ प्रमाणित करता है कि यह AUTH तालिका में मौजूद है या नहीं। यदि आपको दो चीजें करने की ज़रूरत नहीं है। कॉल सदस्यता। क्रिएट यूज़र() जो भी जेनरेट किया गया उपयोगकर्ता नाम चाहते हैं (या ओपनिड द्वारा प्रदान किया गया ईमेल पता) में गुजर रहा है। मैं पासवर्ड के लिए एक GUID उपयोगकर्ता का उपयोग नहीं किया जाएगा। उसी समय सदस्यता उपयोगकर्ता नाम को ओपनिड दावा पहचान में मैप करने के लिए AUTH तालिका में एक प्रविष्टि डालें।

जब कोई आपकी साइट पर एक खुली आईडी के साथ प्रमाणित करता है और यह पहले से ही मौजूद है फॉर्म फॉर्म प्रमाणीकरण। रेडियोधक फ्रॉमिनपेज ओपनिड से जुड़े उपयोगकर्ता नाम के साथ और सभी उपयुक्त प्रमाणीकरण टिकट सेट किए जाएंगे।

अब आप सुरक्षा के सभी अच्छे सामानों का उपयोग कर सकते हैं जैसे कि आप ओपनिड को लागू करने से पहले हमेशा कर सकते हैं।

संपादित करें: इस सेटअप के एक अतिरिक्त लाभ के रूप में आपके पास उपयोगकर्ता नाम/पासवर्ड लॉगिन की अनुमति देने के भविष्य में विकल्प है।

आप किसी भी समय अपने सदस्यता प्रदाता को भी स्वैप कर सकते हैं।

इसके अलावा, AUTH तालिका की एक से अधिक प्रकृति आपको आसानी से कई ओपनिड्स को जोड़ने की अनुमति देती है।

+0

अद्भुत उत्तर - आज इसे लागू करेगा। बहुत बहुत धन्यवाद! –

+1

और मैं अभी भी 'सदस्यता। गेटयूसर()' का उपयोग कर सकता हूं, है ना? –

+0

हां, आप अभी भी सदस्यता.GetUser() का उपयोग कर सकते हैं। जैसे ही आप उपयोगकर्ता नाम को RedirectFromLoginPage पर पास करते हैं, आप अनिवार्य रूप से अंतर्निहित लॉगिन नियंत्रणों के माध्यम से क्या होता। – jwsample

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