2015-02-10 4 views
21

.NET में पहचान के बारे में बात करते समय हमारे पास Principal का विचार है। इंटरफ़ेस IPrincipal है और इसके साथ कार्यान्वयन ClaimsPrincipal है। हम किसी भी समय Thread.CurrentPrincipal का उपयोग कर उस इंटरफ़ेस के कार्यान्वयन के एक उदाहरण तक पहुंच सकते हैं।वास्तव में .NET में प्रिंसिपल क्या है?

अब, मैं कभी नहीं समझता कि यह प्रिंसिपल वास्तव में क्या है। दरअसल, पहले मैंने सोचा था कि यह वर्तमान उपयोगकर्ता की पहचान का प्रतिनिधित्व करने वाला कुछ था। लेकिन ऐसा नहीं है, वास्तव में इसके लिए ClaimsIdentity कार्यान्वयन के साथ एक और इंटरफेस IIdentity है।

एक प्रमुख वस्तु कोड है कि उपयोगकर्ता की पहचान (IIdentity) और किसी भी भूमिकाओं जो वे संबंधित सहित, चल रहा है जिनकी ओर से उपयोगकर्ता की सुरक्षा संदर्भ प्रतिनिधित्व करता है: एक छोटे से सर्च कर रहे हैं मैं MSDN पर निम्नलिखित पाया।

लेकिन क्या जिनकी ओर से कोड चल रहा है उपयोगकर्ता के इस सुरक्षा संदर्भ वास्तव में इसका मतलब है? मुझे लगता है कि मुझे अभी तक यह नहीं मिला कि यह क्या प्रतिनिधित्व करना है।

+1

https://msdn.microsoft.com/en-us/library/ftx85f8x.aspx – James

उत्तर

9

किसी संसाधन या किसी कोड को चलाने की क्षमता को अधिकृत करते समय, यह जानने के लिए पर्याप्त नहीं है कि कौन सा उपयोगकर्ता कार्रवाई को अधिकृत कर रहा है, लेकिन वे किस भूमिका के तहत इसे अधिकृत कर रहे हैं।

इस बारे में सोचें कि जब आप खोल खोलते हैं तो लगभग बराबर होता है: खोल अब एक अलग प्रिंसिपल (अधिक विशेषाधिकारों के साथ) चल रहा है, भले ही प्रिंसिपल की पहचान अभी भी वही है (आपका उपयोगकर्ता खाता)।

IIdentity प्रकार प्रमाणीकरण, अर्थात के मुद्दों की स्थापना है कि प्रणाली के लिए जाना जाता एक पहचान वास्तव में एक एजेंट है कि पहचान के अंतर्गत कार्य करने के लिए चाहता है के अंतर्गत आता है के आसपास केंद्रित कर रहा है। यह कुछ भी अधिकृत करने के लिए एक आवश्यक शर्त है, लेकिन पूरी कहानी नहीं है।

4

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

सुरक्षा संदर्भ एक स्थिर बात नहीं है; इसे प्रिंसिपल की भूमिका को समायोजित करके और पहचान (उपयोगकर्ता) और सुरक्षा संदर्भ के तहत चल रहे एप्लिकेशन को अधिक या कम विशेषाधिकारों को जोड़कर बदला जा सकता है। प्रिंसिपल पहचान प्लस भूमिकाओं है https://msdn.microsoft.com/en-us/library/z164t8hs.aspx

2

वर्णन यह कहते हैं,:

यहाँ इस बारे में अधिक जानने के लिए शुरू करने के लिए एक अच्छी जगह है।

यह वास्तव में यह बहुत महत्वपूर्ण था

public interface IPrincipal 
{ 
    IIdentity Identity { get; } 
    bool IsInRole(string role); 
} 

विचार के रूप में सरल सार के लिए कुछ है। यद्यपि वहां मूल रूप से केवल कुछ कार्यान्वयन थे (WindowsPrincipal, RolePrincipal और GenericPrincipal) बाद में अन्य कार्यान्वयनकर्ताओं को पेश किया गया था (उदाहरण के लिए ClaimsPrincipal)। और सभी विरासत कोड को सभी कार्यान्वयन के साथ, लेकिन कुछ भी बदले बिना, नए कार्यान्वयन के लिए निर्बाध रूप से अपग्रेड किया जा सकता है।

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