2015-06-21 12 views
48

में भूमिका बनाम दावों के लिए सर्वोत्तम अभ्यास ASP.NETIdentity में मैं पूरी तरह से नया हूं और Roles and/or Claims के उपयोग में सर्वोत्तम प्रथाओं का विचार प्राप्त करना चाहता हूं।एएसपी.NET पहचान

यह सब पढ़ने के बाद, मैं अभी भी तरह प्रश्न हैं ...

प्रश्न: हम अब भूमिकाओं का उपयोग करें?
प्रश्न: यदि हां, तो भूमिकाएं अभी भी क्यों दी जाती हैं?
प्रश्न: क्या हमें केवल दावों का उपयोग करना चाहिए?
प्रश्न: क्या हमें भूमिकाओं का उपयोग करना चाहिए & एक साथ दावा करता है?

मेरा प्रारंभिक विचार यह है कि हमें उन्हें "साथ" उपयोग करना चाहिए। मैं Claims को Roles पर उप-श्रेणियों के रूप में देखता हूं।

उदाहरण के लिए :
भूमिका: लेखा
दावा: CanUpdateLedger, CanOnlyReadLedger, CanDeleteFromLedger

प्रश्न: वे परस्पर अनन्य होने के लिए लक्षित कर रहे हैं?
प्रश्न: या क्या आप केवल दावे पर जाने और दावों को पूरी तरह योग्य बनाने के लिए बेहतर हैं?
प्रश्न: तो यहां सर्वोत्तम अभ्यास क्या हैं?

उदाहरण: का प्रयोग भूमिकाओं & साथ में दावा
बेशक , तो आप इस के लिए अपने स्वयं के गुण तर्क लिखने के लिए होता है ...

[Authorize(Roles="Accounting")] 
[ClaimAuthorize(Permission="CanUpdateLedger")] 
public ActionResult CreateAsset(Asset entity) 
{ 
    // Do stuff here 

    return View(); 
} 

उदाहरण: पूरी तरह से योग्यता आपका दावा

[ClaimAuthorize(Permission="Accounting.Ledger.CanUpdate")] 
public ActionResult CreateAsset(Asset entity) 
{ 
    // Do stuff here 

    return View(); 
} 
+1

तो, मुझे अब एक ही समस्या का सामना करना पड़ रहा है, आप इसे कैसे हल करते हैं और आप आवेदन में अनुमति कैसे घटा सकते हैं? – Loai

उत्तर

47

एक भूमिका एक प्रतीकात्मक श्रेणी है जो एकत्रित होती है आर उपयोगकर्ता जो सुरक्षा विशेषाधिकारों के समान स्तर साझा करते हैं। भूमिका-आधारित प्राधिकरण को पहले उपयोगकर्ता की पहचान करने की आवश्यकता होती है, फिर उन भूमिकाओं का पता लगाना चाहिए जिन पर उपयोगकर्ता को असाइन किया गया है, और आखिरकार उन भूमिकाओं की तुलना उन भूमिकाओं की तुलना में करें जो संसाधन तक पहुंचने के लिए अधिकृत हैं।

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

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

13

जैसा कि @ क्लेज़ ने पूरी तरह से समझाया है, दावा अधिक वर्णनात्मक और गहरी भूमिका हो सकती है। मैं उनके बारे में आपकी भूमिकाओं के रूप में सोचता हूं। मेरे पास जिम आईडी है, इसलिए मैं सदस्यों की भूमिका से संबंधित हूं। मैं किकबॉक्सिंग सबक में भी हूं, इसलिए मेरे पास उनके लिए दावा है, एक किकबॉक्सिंग आईडी। मेरे आवेदन के लिए मेरे सदस्यता अधिकारों को फिट करने के लिए एक नई भूमिका की घोषणा की आवश्यकता होगी। इसके बजाए, मेरे पास जिम में कई विशेष सदस्यता प्रकारों के बजाय जिम में क्या कर सकते हैं, इसके लिए मेरे पास आईडी हैं। यही कारण है कि दावे मेरे लिए बेहतर फिट बैठते हैं।

भूमिकाओं पर दावों का उपयोग करने के लाभ के बारे में बात करते हुए बैरी डोर्रान का एक महान स्पष्टीकरण वीडियो है। उन्होंने यह भी कहा कि पिछली संगतता के लिए भूमिकाएं अभी भी .NET में हैं। वीडियो दावों, भूमिकाओं, नीतियों, प्राधिकरण और प्रमाणीकरण कार्यों के तरीके के बारे में बहुत जानकारीपूर्ण है।

आप इसे यहाँ पा सकते हैं: ASP.NET Core Authorization with Barr Dorrans

पी एस। मेरे अंग्रेजी व्याकरण के बारे में खेद है।

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