2010-04-09 10 views
10

क्या एएसपी.NET फॉर्म प्रमाणीकरण के साथ इस रोल प्रदाता AspNetWindowsTokenRoleProvider का उपयोग करना संभव है (इस सदस्यता प्रदाता System.Web.Security.ActiveDirectoryMembershipProvider के माध्यम से)?सक्रिय निर्देशिका भूमिका और प्रमाणीकरण प्रदाताओं का उपयोग करते समय मैं एएसपी.NET फॉर्म प्रमाणीकरण यूएक्स कैसे प्रदान कर सकता हूं?

ऐसा लगता है कि यह केवल <authentication mode="Windows"> के साथ काम करता है, क्या इसे FORMS के साथ उपयोग करना संभव है?

पृष्ठभूमि - उद्देश्य यहाँ एक ASP.NET फॉर्म्स UX बैक-एंड प्रमाणीकरण प्रणाली के रूप में सक्रिय निर्देशिका का उपयोग करते समय प्रदान करना है। यदि अंतर्निहित प्रौद्योगिकियों का उपयोग करके ऐसा करने का एक और आसान तरीका है, तो यह बहुत अच्छा है और मैं इसके बारे में भी सुनना चाहता हूं।

अद्यतन

मैं कहना चाहिए कि मैं प्रमाणीकरण काम कर रहे हैं, क्या मैं के साथ (जैसे भूमिकाओं के रूप में) विस्तृत नियंत्रण के एक स्तर जोड़ने के लिए संघर्ष कर रहा हूँ है।

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

+0

आपके "पृष्ठभूमि" अनुच्छेद के आधार पर ऐसा लगता है कि आपको इस ट्यूटोरियल की आवश्यकता है: - http://msdn.microsoft.com/en-us/library/ms998360.aspx इसे "कैसे करें: फ़ॉर्म प्रमाणीकरण का उपयोग करें एएसपी.नेट 2.0 में सक्रिय निर्देशिका "यदि आप एक नए संस्करण का उपयोग कर रहे हैं तो 2.0 तत्व के बारे में चिंता न करें - यह केवल न्यूनतम आवश्यक संस्करण इंगित करता है। – rtpHarry

उत्तर

6

जैसा कि अन्य ने उल्लेख किया है, आप AspNetWindowsTokenRoleProvider के साथ ActiveDirectoryMembershipProvider का उपयोग नहीं कर सकते हैं।

  1. AuthorizationManager उर्फ ​​Azman का उपयोग करें: आप प्रपत्र प्रमाणीकरण के साथ ADMP उपयोग करना चाहते हैं, तो आपको कुछ विकल्प हैं। - AzMan विंडोज 2003+ में बनाया गया है और सक्रिय निर्देशिका समूहों के साथ बातचीत कर सकते हैं। इसके अतिरिक्त, AuthorizationStoreRoleProvider .NET 2.0+ में बनाया गया है जिसका उपयोग आप इसके साथ संवाद करने के लिए कर सकते हैं। AzMan कार्य, संचालन और भूमिकाओं पर काम करता है, जहां संभवतः आपके आवेदन को विशिष्ट कार्यों पर कार्य करने के लिए कोड किया जाएगा जिसे फिर संचालन में समूहीकृत किया जा सकता है और फिर आप भूमिकाएं बना सकते हैं जिनके पास विभिन्न संचालन करने का अधिकार है। एक प्रबंधन अनुप्रयोग है जो इंस्टॉल हो जाता है जब आप AzMan इंस्टॉल करते हैं जिसका उपयोग आप कार्य, संचालन और भूमिकाओं को प्रबंधित करने के लिए कर सकते हैं। हालांकि, Azman के लिए कुछ downsides हैं। सबसे पहले, AuthorizationStoreRoleProvider कार्य को पहचान नहीं करता है। इसके बजाय, यह ऑपरेशंस की सूची के साथ Roles सूची लोड करता है। इस प्रकार, जब तक आप प्रदाता का कस्टम संस्करण नहीं बनाते, तब तक आपके अनुप्रयोगों को कार्य नामों के बजाय ऑपरेशन नामों की आवश्यकता होगी। दूसरा, यह उस भाषण में काम करने के लिए एक भालू हो सकता है, निम्नतम स्तर पर, अभी भी COM के माध्यम से है। जब तक आप अपने प्रशासकों को AzMan टूल का उपयोग नहीं करना चाहते हैं, तो आपको भूमिकाओं में संचालन, भूमिकाएं और सदस्यता प्रबंधित करने के लिए अपने स्वयं के पृष्ठ लिखना होगा।

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

  3. एडी समूह का सम्मान करने वाले कस्टम एडी रोलप्रोवाइडर को लिखें (या पता लगाएं)। एक कस्टम रोल प्रदाता लिखना दिल की बेहोशी के लिए नहीं है बल्कि ऐसा करने से प्रशासक अपने मौजूदा एडी टूल्स का उपयोग करके भूमिका सदस्यता प्रबंधित कर सकते हैं।

0

हाँ, आप सही हैं; यह केवल विंडोज़ फॉर्म प्रमाणीकरण के साथ काम करेगा। आप इसे यहां पुष्टि कर सकते हैं: http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx

बस एक सुझाव। AzMan (प्राधिकरण प्रबंधक) के साथ AuthorizationStoreRoleProvider आज़माएं। यह मेरे लिए काम करता था (उम्र पहले, इसलिए मुझे ज्यादा याद नहीं है)।

+0

क्या AzMan अंतर्निहित है? या यह एक नया/अतिरिक्त डाउनलोड/स्थापित है? यदि हां, तो कहाँ? – Nate

+0

"प्रमाणीकरण प्रबंधक" विंडोज सर्वर के साथ आता है। बस अपनी परियोजना में अपने डीएलएस आयात करें, और आप जाने के लिए अच्छे हैं। :) –

+0

इस यूआरएल की जांच करें: http://msdn.microsoft.com/en-us/library/ms998336.aspx यह AzMan स्थापना के बाद से पूरी प्रक्रिया बताता है। –

2

AuthorizeAttribute और अधिभावी AuthorizeCore से इनहेरिट द्वारा अपने स्वयं के ADAuthorizeAttribute को लागू करें। यह आपके स्वयं के रोल प्रदाता को लागू करने या AzMan को स्थापित करने और कॉन्फ़िगर करने से बहुत आसान है।

मेरा उदाहरण यहां देखें: ASP .NET MVC Forms authorization with Active Directory groups

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