2009-05-27 9 views
13

एएसपीनेट साइटों पर ओपनआईडी का उपयोग करने के कई तरीके हैं, लेकिन उनमें से कोई भी सदस्यता और प्रमाणीकरण प्रदाता के मौजूदा तंत्र का उपयोग नहीं कर रहा है।एएसपीनेट में ओपनआईडी लागू करना "उचित" - सदस्यता या प्रमाणीकरण प्रदाता?

मुझे आश्चर्य है कि साइट बनाने के लिए उचित तरीका क्या होगा जो पूरी तरह से ओपनआईडी पर निर्भर करता है? प्रपत्र प्रमाणीकरण का उपयोग जारी रखना, लेकिन SqlMembershipProvider का एक संस्करण लागू करना जो OpenID के विरुद्ध लुकअप करता है?

या क्या मैं एक स्तर गहराई से जाऊंगा और अपना खुद का फॉर्म प्रमाणीकरण मॉड्यूल लिखूंगा? ऐसा लगता है कि यह बहुत ही नंगे हड्डियों के रूप में है, (मेरे ज्ञान के लिए) प्रपत्र प्रमाणीकरण किसी भी डेटा स्रोत के खिलाफ देखा जा सकता है।

या फॉर्म का प्रमाणीकरण मॉड्यूल रखते हुए, यह ओपनआईडी के खिलाफ लुकअप करने का तीसरा तरीका है?

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

उत्तर

10

एएसपी.NET परिभाषित सदस्यता एपीआई ओपनआईडी के साथ बिल्कुल ठीक नहीं है, शायद यही कारण है कि आप इसका उपयोग करके कई सिस्टम नहीं देखते हैं। मैंने अभी तक ओपनआईडी के साथ सदस्यता प्रदाता का उपयोग करने की आवश्यकता नहीं देखी है, इसलिए यह वास्तव में कोई मुद्दा नहीं बन गया है। ओपनआईडी के साथ सदस्यता प्रदाता मॉडल फिट करने का प्रयास करने वाली एक परियोजना http://code.google.com/p/dotnet-membership-provider/ है, लेकिन ऐसा लगता है कि यह हाल ही में बनाए रखा गया है।

जैसा कि गर्भ ने कहा, आपको फॉर्म प्रमाणीकरण मॉड्यूल को फिर से करने की आवश्यकता नहीं है। यह OpenID के साथ पूरी तरह से अच्छी तरह से काम करता है।

देखें जो DotNetOpenAuth के साथ आता है यह देखने के लिए कि सदस्यता प्रदाता के बिना चीजें कैसे काम कर सकती हैं।

+0

वोट बेहतर सदस्यता प्रदाता इंटरफ़ेस के लिए जो ओपनआईडी के साथ काम करता है: http://aspnet.uservoice.com/forums/41199-general/suggestions/486926-new-membership-provider-interface-supporting-redir –

0

DotNetOpenId के साथ शामिल एएसपी.नेट एमवीसी नमूना ओपनआईडी द्वारा प्रमाणीकृत किए जाने के बाद उपयोगकर्ता को लॉग इन करने के लिए फॉर्म प्रमाणीकरण का उपयोग करता है। यह नहीं है, जहां तक ​​मैं कह सकता हूं, सदस्यता प्रणाली के साथ कोई एकीकरण करें।

4

OpenID Membership Provider प्रोजेक्ट जो हो सकता है वह हो सकता है।

और भले ही आप लॉगिन नियंत्रण का उपयोग नहीं कर रहे हैं, फिर भी प्रमाणीकरण के लिए सदस्यता प्रदाता मॉडल का लाभ उठाने की अनुशंसा की जाती है।

प्रपत्र प्रमाणीकरण विशिष्ट कार्यक्षमता को कार्यान्वित करने के रूप में गहराई से जाना जरूरी नहीं है, क्योंकि सदस्यता प्रदाता लिखना बहुत छोटा है, और मुझे कभी ऐसा मामला नहीं मिला है जहां यह संभालने के लिए पर्याप्त लचीला नहीं था। ध्यान दें कि अक्सर आपको केवल एक कार्यकर्ता प्रदाता प्राप्त करने के लिए इंटरफ़ेस के एक विधि (ValidateUser()) को लागू करने की आवश्यकता होती है।

+4

सावधान रहें कि यह प्रोजेक्ट ओपनआईडी लाइब्रेरी के * बहुत * पुराने संस्करण का उपयोग कर रहा है और नवीनतम संस्करण (जो DotNetOpenAuth http://dotnetopenid.googlecode.com/ पर उपलब्ध है) के बिना उपयोग के लिए सलाह नहीं है –

0

यदि कोई अच्छा सी # जेन्रेन उदाहरण में आता है - कृपया मुझे बताएं।

मुझे डीएसएन टंबलर को इंगित कर रहा है, फिर लॉगिन विजेट के लिए यह सबडोमेन पर वापस आता है जहां मेरे पास रूट के नीचे एक फ़ोल्डर का पथ है।

तो मेरे पास एक एपकोड फ़ोल्डर है, इसलिए मैं इस सी # सहायक वर्ग का उपयोग कर रहा हूं - मैं टोकन को ठीक से वापस प्राप्त कर सकता हूं और यह मुझे मेरे सदस्यों को ले जा रहा है .domain.com ताकि विजेट काम कर रहा हो - बस इसकी आवश्यकता है प्रदाता पर उपयोगकर्ता विवरण प्राप्त करें जो वे सदस्यों के क्षेत्र में पहुंचते थे।

http://groups.google.com/group/rpx-developers/web/c-helper-class?_done=/group/rpx-developers%3F

सहायक वर्ग

त्रुटि '/' आवेदन में

सर्वर त्रुटि है। अप्रत्याशित API त्रुटि विवरण: वर्तमान वेब अनुरोध के निष्पादन के दौरान एक अनचाहे अपवाद हुआ। त्रुटि के बारे में अधिक जानकारी के लिए और जहां यह कोड में उत्पन्न हुआ, कृपया स्टैक ट्रेस की समीक्षा करें।

अपवाद विवरण: System.Exception: अनपेक्षित API त्रुटि

स्रोत त्रुटि:

लाइन 22: लाइन 23: RPX feedit = नए RPX ("apikey" "https://learnbartending.rpxnow.com/"); लाइन 24: feedit.AuthInfo (जमे हुए); लाइन 25: XmlElement xmlstuff = feedit.AuthInfo (जमे हुए); लाइन 26:

स्रोत फ़ाइल: सी: \ Inetpub \ vhosts \ learnbartending.com \ httpdocs \ सदस्यों \ Default.aspx.cs पंक्ति: 24

स्टैक ट्रेस: ​​

0

आप अपनी सदस्यता डेटाबेस से userID(guid) का लाभ उठाने की जरूरत है तो आप एक कंकाल खाता बनाने के लिए करने जा रहे हैं, तो जब वे पहली बार प्रवेश, वें बाद के लॉगिन पर एक ताजा पासवर्ड घूर्णन करने के कुछ तंत्र को समझें। यह पासवर्ड स्पष्ट रूप से आपके सदस्यता प्रदाता के लिए होगा और पारदर्शी होगा।

अब मजेदार हिस्सा मेटाडेट ढूंढ रहा है जो आम है? एचएमएम ई-मेल पता शायद?

मैं इस दुविधा पर और साथ ही फेसबुक कनेक्ट के साथ काम कर रहा हूं। मुझे अपने डेटाबेस में वर्गीकृत पोस्टिंग में जोड़ने के लिए एक उपयोगकर्ता आईडी होना है।

मजेदार सामान।

बस एक अपडेट। मुझे यह अच्छी तरह से काम मिल गया।

मैं फेसबुक या openid के लिए एक मेज

CREATE TABLE [dbo].[OAuthUsers] 
(
    [OuthUserID] [int] IDENTITY(1,1) NOT NULL, 
    [UserID] [uniqueidentifier] NOT NULL, 
    [access_token] [varchar](150) NULL, 
    [expires_in] [datetime2](7) NULL, 
    [refresh_token] [varchar](150) NULL, 
    [issued_at] [datetime2](7) NULL, 
    [user_id] [varchar](50) NOT NULL, 
    [domain] [varchar](50) NULL, 
    [scope] [varchar](150) NULL, 
    CONSTRAINT [PK_OAuthUsers] PRIMARY KEY CLUSTERED 
) 

स्टोर access_token बनाया। ओपनआईडी में एक ताज़ा टोकन है जिसके लिए आप पूछ सकते हैं, इसलिए इसे

मेरे पास मेरे redirect_url के रूप में एशक्स हैंडलर है। उस हैंडलर में आप प्रत्येक मामले के लिए सभी प्रसंस्करण कर सकते हैं, उपयोगकर्ता के पास प्रदाता डेटाबेस में पहले से ही एक खाता है, उपयोगकर्ता के पास प्रदाता डेटाबेस में कोई खाता नहीं है, इसलिए हम एक बनाते हैं। वह सब साफ बकवास :)

इसके साथ मजा लें।

2

यह एक पुराना सवाल है, लेकिन मैंने उस दृष्टिकोण को नहीं देखा है जिसका उपयोग मैंने इसके आसपास खोजते समय किया था, इसलिए यहां जाता है। (यह केवल Google के साथ परीक्षण किया गया है, क्योंकि मैं पूर्ण ओपनआईडी एकीकरण के बजाय, मेरी कंपनी के Google Apps for Business खाते के साथ एकीकरण की उपस्थिति बना रहा हूं।)

मैं ओपनआईडी का दावा करने के लिए DotNetOpenAuth का उपयोग करता हूं, यह सुनिश्चित कर रहा हूं कि ई-मेल पता की आवश्यकता हो।

 request.AddExtension(new ClaimsRequest 
     { 
      BirthDate = DemandLevel.NoRequest, 
      Email = DemandLevel.Require, 
      FullName = DemandLevel.Require 
     }); 
फिर

, जब मैं वापस एक प्रमाणीकृत प्रतिक्रिया मिल, मैं उपयोगकर्ता नाम ई-मेल से देखो:

  case AuthenticationStatus.Authenticated: 
       ClaimsResponse info = response.GetExtension<ClaimsResponse>(); 
       string username = Membership.GetUserNameByEmail(info.Email); 
       FormsAuthentication.SetAuthCookie(username, true); 
       return Redirect(ReturnUrl ?? "/"); 

मान लिया जाये कि आप भी एक सदस्यता और भूमिका प्रदाता की स्थापना की है, रूपों की स्थापना उचित उपयोगकर्ता नाम के लिए ऑथ कुकी आपको अन्य सभी सदस्यता और भूमिकाओं की भलाई तक पहुंच प्रदान करती है।

+0

आप बचत से कैसे निपटते हैं सदस्यता डेटाबेस? –

+0

बचत, जैसे, नए खाते बना रहे हैं? – Dave

+1

हां, आप पासवर्ड से कैसे निपटते हैं? –

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

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