2016-07-19 12 views
20

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

क्या मैं, है रहा हूँ

1) क्या SignInManager है? 2) इसका उपयोग कैसे करें? 3) और मेरे पास मेरा स्वयं का डेटाबेस है जिसमें प्रमाण-पत्र संबंधित जानकारी (उपयोगकर्ता नाम और पासवर्ड)

मैं साइनइनमैनगर का उपयोग कैसे कर सकता हूं और इसका उपयोग कैसे करें ताकि मेरा कस्टम डेटाबेस उपयोगकर्ताओं को प्रमाणीकृत करने के लिए उपयोग किया जा सके?

मैं asp.net MVC 5 और विजुअल स्टूडियो 2015 का उपयोग कर रहा मेरी नमूना परियोजना में मैं खातों नियंत्रक कि

public async Task<ActionResult> ExternalLoginCallback(string returnUrl) 

की तरह कार्रवाई के तरीकों में शामिल है लेकिन मुझे पता नहीं है कि यह कैसे उपयोग करने के लिए, MSDN पूरी तरह से है इस पर जानकारी प्रदान करने के लिए बेकार। कोई उपयोगी लिंक जो विवरण में बताता है क्योंकि मुझे नहीं पता कि साइनइनमेनगर क्या है और यह क्या है।

धन्यवाद

उत्तर

28

अस्वीकरण: मैं मॉडल ASP.NET पहचान में इस्तेमाल अपने आप को और क्या मैं चीजों की मेरी समझ यह है कि गलत हो सकता है है का कहना है कि (मैं भी स्पष्ट बातें करते हुए कहा जा सकता है, तो मैं माफी माँगता हूँ) से उलझन में हूँ । इसके अलावा, मैं हाल ही में Asp.Net कोर की पहचान के साथ खेल रहा था जो Asp.Net 4 के लिए उपलब्ध था की तुलना में थोड़ा अलग है, इसलिए मैं चीजों को मिश्रित कर सकता हूं। आवेदन कुकी और बाहरी कुकी:

कुकीज़

ASP.NET पहचान कुकीज़ के दो प्रकार के साथ चल रही है। एप्लिकेशन कुकी में आपके एप्लिकेशन की पहचान होती है और साइन इन मैनेजर द्वारा जारी की जाती है। बाहरी कुकी में बाहरी प्रमाणीकरण प्रदाता पहचान होती है और प्रमाणीकरण मिडलवेयर द्वारा जारी की जाती है (जैसे FacebookAuthenticationMiddleware, उदाहरण के लिए)। आप बाहरी कुकी का उपभोग करने के लिए साइन इन मैनेजर का उपयोग करते हैं और इसके बजाय एप्लिकेशन कुकी जारी करते हैं। यदि आप बाहरी प्रमाणीकरण का उपयोग नहीं करते हैं तो आप बाहरी कुकीज़ से निपट नहीं पाते हैं।

प्रबंधक में

साइन

कक्षा इस तरह की घोषणा की:

public class SignInManager<TUser, TKey> : IDisposable 
    where TUser : class, IUser<TKey> 
    where TKey : IEquatable<TKey> 

तो तुम जब तक कि यह IUser<TKey> इंटरफ़ेस लागू करता है के रूप में अपने उपयोगकर्ता के रूप में किसी भी वर्ग का उपयोग कर सकते हैं। या यदि आप स्क्रैच से शुरू करते हैं तो IdentityUser का उपयोग अपने आधार के रूप में करें, जो IUser<string> लागू करता है। अतीत में मैंने intTKey के रूप में एक कार्यान्वयन बनाने का प्रयास किया था, लेकिन इसे काम करने की कोशिश करने में कुछ समय व्यतीत करने के बाद छोड़ दिया गया प्रयास और कोई प्रगति नहीं देख रही थी। सही किसी भी जांच के बिना दूर निर्दिष्ट उपयोगकर्ता के लिए

SignInManager.SignInAsync विधि मुद्दों आवेदन कुकी में

पासवर्ड संकेत है, इसलिए यदि आप किसी भी कस्टम प्रमाणीकरण तर्क लागू, आप इसे (डिफ़ॉल्ट asp.net MVC टेम्पलेट का उपयोग करता है का उपयोग करना चाहें उपयोगकर्ता पंजीकरण करने के बाद उन्हें पंजीकरण के बाद सही प्रमाणीकरण करने की आवश्यकता नहीं है)।

SignInManager.PasswordSignInAsync उपयोगकर्ता नाम और पासवर्ड दिए जाने पर उनकी वैधता जांचती है और यदि वे सही हैं तो एप्लिकेशन कुकी जारी करते हैं।

में

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

Asp.Net पहचान User और Login, जहां User है ... अच्छी तरह से, उपयोगकर्ता (एक व्यक्ति) की धारणा है, और Login जो User प्रमाणित करता है के साथ क्रेडेंशियल है। User में कई Login एस हो सकते हैं।

OAuth प्रवाह Asp.Net वेब साइट से देखा के रूप में इस (प्रवाह में डिफ़ॉल्ट लॉग वी.एस. टेम्पलेट द्वारा उत्पन्न के आधार पर) की तरह दिखता है:

  1. आप बाहरी प्रमाणीकरण प्रदाताओं (प्रमाणीकरण मिडलवेयर) की स्थापना जो आप कर रहे हैं स्वीकार करने के इच्छुक (संभवतः बाहरी वेबसाइट पर पंजीकरण करना शामिल है। उदाहरण के लिए, फेसबुक प्रमाणीकरण का उपयोग करने के लिए आपको फेसबुक एप बनाने की ज़रूरत है, अपनी वेबसाइट पर इंगित करने के लिए वहां वापसी यूआरएल सेट अप करें और FacebookAuthenticationMiddleware को ऐप आईडी और ऐप गुप्त फेसबुक के साथ कॉन्फ़िगर करें आपको प्रदान करता है)।
  2. आप अनधिकृत उपयोगकर्ता को आपके द्वारा समर्थित बाहरी प्रदाताओं की पसंद के साथ प्रस्तुत करते हैं।
  3. उपयोगकर्ता एक प्रदाता चुनता है, पसंद अपनी Asp.Net वेब अनुप्रयोग को भेजा जाता है
  4. वेब अनुप्रयोग एक ChallengeResult प्रदाता प्रयोग की जाने वाली का नाम (यह आमतौर पर AccountController.ExternalLogin में होता है) युक्त जारी करता है, वापसी URL को कॉल करने के लिए सेट कर दिया जाता AccountController.ExternalLoginCallback और वास्तविक रिटर्न यूआरएल उपयोगकर्ता को बाद में सहेजा जाना चाहिए।
  5. उचित मिडलवेयर ChallengeResult ऑब्जेक्ट को पकड़ता है और इसे HTTP रीडायरेक्ट प्रतिक्रिया में परिवर्तित करता है जो उपयोगकर्ता के ब्राउज़र को तृतीय पक्ष वेबसाइट पर जाने का कारण बनता है जो उपयोगकर्ता को प्रमाण-पत्र के लिए पूछता है।
  6. सफल प्रमाणीकरण पर तीसरा हिस्सा वेब साइट प्रमाणीकरण मिडलवेयर (फेसबुक के लिए यह /signin-facebook आईआईआरसी) द्वारा तैयार किए गए विशिष्ट यूआरएल पर उपयोगकर्ता को वापस वेबसाइट पर रीडायरेक्ट करता है।
  7. प्रमाणीकरण मिडलवेयर अवरोध से इस कॉल डेटा बाहरी कुकी तृतीय पक्ष वेब साइट से और अगर सब कुछ ठीक मुद्दों से पारित कर दिया मान्य करता है, और जो चरण 4 (AccountController.ExternalLoginCallback होना चाहिए जो) पर वापसी URL के रूप में स्थापित किया गया था करने के लिए आप पुनर्निर्देश।
  8. AccountController.ExternalLoginCallback में आपको बाहरी कुकी का उपभोग करने और इसके बजाय एक एप्लिकेशन कुकी जारी करने की उम्मीद है। यही SignInManager.ExternalSignInAsync करता है: लॉग इन जानकारी दी गई है, यह उपयोगकर्ता को Login के साथ ढूंढने का प्रयास करता है। यदि यह पाता है, तो यह एप्लिकेशन कुकी जारी करता है; यदि ऐसा नहीं होता है, तो यह आपको सूचित करता है और आपको जो करना चाहिए वह आपको करना चाहिए जब आपको अज्ञात Login प्राप्त होता है (आमतौर पर, आप इस बिंदु पर नया उपयोगकर्ता बनाते हैं। वीएस टेम्पलेट से डिफ़ॉल्ट कार्यान्वयन इस बिंदु पर अतिरिक्त जानकारी मांगता है और उपयोगकर्ता को AccountController.ExternalLoginConfirmation में बनाता है)। उसके बाद उपयोगकर्ता चरण में वास्तविक वापसी यूआरएल "बाद के लिए सहेजी" पर भेज दिया जाएगा 4.

कस्टम भंडारण

मैं अब तक Asp.Net पहचान के लिए कस्टम भंडारण बनाने के साथ असफल रहा है। यह आम तौर पर अपने स्वयं के उपयोगकर्ता प्रबंधक वर्ग IUserStore<TUser, TKey>, IUserRoleStore<TUser, TKey> तरह इंटरफेस के UserManager<TUser, TKey> और भंडारण वर्ग को लागू करने गुच्छा उतरते, आदि

+0

बहुत अच्छा जवाब को लागू करना शामिल है।बाहरी साइन इन में चरण 8 के बारे में, क्या मैं वेब एपीआई में साइनइनमेनगर का भी उपयोग करूंगा? –

+0

'साइनइनमैनगर' एक सहायक वर्ग है जो बाहरी/एप्लिकेशन कुकीज़, पासवर्ड सत्यापन और 2 एफए से संबंधित है। सुनिश्चित नहीं है कि उनमें से कोई भी वेब एपीआई के लिए उपयोगी है। – n0rd

+1

बहुत स्पष्ट और सहायक। यहां तक ​​कि स्पष्ट रूप से स्पष्ट रूप से स्पष्ट रूप से प्रस्तुत करने की आवश्यकता है! धन्यवाद! –

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

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