2009-03-13 12 views
5

मैं अब लंबे समय से प्रोग्रामिंग कर रहा हूं, लेकिन मैं दुनिया का सबसे अनुभवी नहीं हूं। डेवलपर। मैंने हाल ही में एक ऐसी परियोजना को उठाया है जो उनकी वेबसाइट के लिए फॉर्म प्रमाणीकरण का उपयोग कर रहा है। मैंने पहली बार नेट 1.1 में प्रपत्र प्रमाणीकरण को देखा और उस समय इसकी कुछ सीमाएं थीं जिससे मुझे यह निर्णय लेने का फैसला किया गया कि यह प्रमाणीकरण के मेरे प्राथमिक रूप के रूप में नहीं है।फॉर्म प्रमाणीकरण

इस परियोजना के लिए आवश्यक है कि उन भूमिकाओं और समूह सदस्यता (जो मैं रूपों प्रमाणीकरण का समर्थन करता है समझ में) है। उदाहरण के लिए "उपयोगकर्ता ए" "कंपनी ए" के लिए एक "व्यवस्थापक" है। क्या प्रपत्र प्रमाणीकरण अब इस प्रकार की उपयोगकर्ता संरचना का समर्थन करता है?

मैंने यह भी पढ़ा है कि फॉर्म प्रमाणीकरण पासवर्ड को सादा पाठ के रूप में वापस भेजता है। यह क्लाइंट एसएसएल का उपयोग नहीं करता है। क्या ये सच है?

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

मैं लेख के एक पेशेवरों और विपक्ष प्रकार के लिए इंटरनेट, लेकिन कोई किस्मत की खोज की है। आप लोग क्या सोचते हैं?

+0

क्या आप .NET 1.1 से बंधे हैं? – Stormenet

+0

नहीं, मैं 2.0 या 3.5 का उपयोग कर सकता हूं। यह सिर्फ इतना है कि मैं शुरू में निर्णय लेने के बाद फॉर्म प्रमाणीकरण सीखने के लिए वापस नहीं गया हूं, मुझे इसे 1.1 में वापस पसंद नहीं आया। जो मैंने पढ़ा है उससे अब बेहतर दिखता है, लेकिन मैंने सोचा कि मुझे पहले इस पर राय मिल जाएगी। – mlindegarde

उत्तर

5

आप आवश्यकताओं को पूरा करने के लिए आप Membership साथ फार्म प्रमाणीकरण का उपयोग करेगा। यदि आपका एप्लिकेशन SQL सर्वर डेटाबेस का उपयोग कर रहा है तो आप इसे प्राप्त करने के लिए सदस्यता प्रदाता के रूप में SQLMembershipProvider का उपयोग कर सकते हैं।

Examining ASP.NET 2.0's Membership, Roles, and Profile एक अच्छी शुरुआत संदर्भ हो सकता है।

कनेक्शन सुरक्षित होने पर पासवर्ड को सादे पाठ के रूप में भेजने के बारे में आपकी चिंता के बारे में।

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

चेतावनी के एक नोट के रूप में, मैं उस क्षेत्र में एक विशेषज्ञ होने से बहुत दूर हूं, लेकिन हाल ही में मुझे ऐसी ही समस्या का सामना करना पड़ रहा था जिसका आप वर्णन कर रहे हैं, हालांकि मुझे यह कुछ उपयोगी मिल सकता है।

+0

इसे थोड़ा सा साफ़ करने के लिए: पासवर्ड डीबी को भेज दिया जाता है। पासवर्ड ब्राउज़र पर नहीं भेजे जाते हैं, केवल लॉगिन फॉर्म सबमिट करते समय प्राप्त होता है (जहां https की आवश्यकता होती है)।भूमिका प्रदाता अपनी भूमिका/कंपनी रिक, और न ही आधार रोलप्रोवाइडर को संभालता है (हालांकि आप इसे एडमिन-कंपनी ए पर चालाक प्राप्त कर सकते हैं :))। – eglasius

+0

लिंक के लिए धन्यवाद, बहुत जानकारीपूर्ण। मैं एक "वोट अप" करूंगा, लेकिन मेरे पास अभी तक ऐसा करने के लिए पर्याप्त प्रतिष्ठा नहीं है। – mlindegarde

+0

@Freddy - पॉइंटर्स के लिए धन्यवाद - मुझे शुक्रवार दोपहर के सवालों के जवाब न देना सीखना चाहिए - खासकर अगर यह शुक्रवार 13 वें है;)। जब मैं कुछ खाली समय पाता हूं तो मैं अपना जवाब संपादित करूंगा – kristof

1

फॉर्म प्रमाणीकरण पासवर्ड को सादा पाठ के रूप में वापस नहीं भेजता है। जब तक आप सुनिश्चित करते हैं कि इसे प्राप्त करते समय लॉगिन/pwd संरक्षित है (यानी https ... ssl का उपयोग करके) वहां कोई सुरक्षा जोखिम नहीं है।

तुम सच में प्राधिकरण कि जिस तरह से करने की जरूरत है, तो आप के लिए ... प्रमाणीकरण रूपों प्रमाणीकरण पर भरोसा करते हैं, और अपने खुद के तंत्र के साथ प्राधिकरण कर सकते हैं।

+0

जैसा कि मैंने उल्लेख किया है, एचटीटीपीएस/एसएसएल का उपयोग नहीं कर रहे हैं, इसलिए यह मेरी चिंता थी; हालांकि, मुझे लगता है कि इसे बिना किसी योजना के सर्वर के रूप में भेजा जाता है। मैं सोच रहा था कि मैं प्रपत्र प्रमाणीकरण का उपयोग कर सकता हूं और फिर प्रमाणीकरण द्वारा प्रदान की गई आईडी के आधार पर अपना स्वयं का प्राधिकरण कर सकता हूं। – mlindegarde

+0

आप अपना खुद का प्राधिकरण कर सकते हैं, लेकिन सबसे आसान (केवल एकमात्र) तरीका नहीं है, आपको आईडी - HttpContext.Current.User.Identity.Name (लॉग इन होने के बाद) के बजाय उपयोगकर्ता नाम प्राप्त होगा। – eglasius

1

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

मैं अत्यधिक रूपों प्रमाणीकरण के बारे में Microsoft से these वीडियो देखने की सलाह देते हैं। आप पाएंगे कि यह उपयोग करने के लिए काफी आगे है। अनुमोदित, यह ऐसा कुछ नहीं है जिसे आप एक साथ फेंक सकते हैं क्योंकि यह काफी मजबूत और लचीला ढांचा है। आप इसे पढ़ना और इन वीडियो को देखना चाहते हैं। हालांकि, जब आप इससे परिचित हो जाते हैं, तो आप पाएंगे कि यह विकास समुदाय द्वारा सुरक्षित, समर्थित और बहुत अच्छी तरह स्वीकार्य है।

ओह, मैं सिर्फ अपने प्रश्न फिर से समीक्षा की और आप ने कहा कि वे SSL का उपयोग नहीं करते। इस साइट को कितना सुरक्षित होना चाहिए? मेरे लिए, यह मेरा पहला व्यवसाय होगा एसएसएल में जाना!

+0

यह ध्यान रखना महत्वपूर्ण है कि यह एक इंटरनेट (इंट्रानेट नहीं) एप्लिकेशन है। क्या आप अभी भी सक्रिय निर्देशिका का उपयोग कर सकते हैं जब उपयोगकर्ता इंटरनेट के माध्यम से वेबसाइट के लिए पंजीकरण करते हैं? मैं कोई विंडोज सुरक्षा विशेषज्ञ नहीं हूं, लेकिन मैंने सोचा कि सक्रिय निर्देशिका केवल इंट्रानेट के लिए थी। – mlindegarde

+0

हां, आप बाहरी चेहरे वाले एडी वन का उपयोग कर सकते हैं और इसे प्रमाणित कर सकते हैं। –

0

db does not को दुकान सादा पासवर्ड पाठ यह md5 या हैशिंग के कुछ अन्य साधनों का उपयोग करता है ... मुझे पता है कि वे 2 मिलान कर रहे हैं टुकड़ों में बांटा एक दूसरे के खिलाफ तार प्रमाणन के लिए wheter वे स्ट्रिंग क्लाइंट साइड या सर्वर साइड im नहीं परिवर्तित निश्चित रूप से ... शायद ब्राउज़र ... यदि आप एसएसएल का उपयोग करने के बारे में सोच रहे हैं तो मुझे नहीं लगता कि आपको एएसपीनेट फॉर्मों का उपयोग करना चाहिए ... आपके विज्ञापन के लिए कुछ समय खनन के आधार पर अपने स्वयं के फॉर्मों के आधार पर काम करना है। ...

1

फॉर्म प्रमाणीकरण समूहों को मूल रूप से समर्थन नहीं देगा। हम जो करते हैं वह उपयोगकर्ता को "प्रमाणीकृत" करने के लिए उपयोग करता है (साबित करता है कि वे कौन हैं) और फिर हम उपयोगकर्ता के "अधिकृत" करने के लिए अपने स्वयं के डेटा स्टोर का उपयोग करते हैं (वर्णन करें कि वे क्या कर सकते हैं)।

0

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

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

इनपुट के लिए फिर से धन्यवाद।

+0

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

0

यदि आप एसएसएल का उपयोग नहीं कर रहे हैं तो पासवर्ड तार पर स्पष्ट पाठ पारित करना होगा। इसलिए एसएसएल की आवश्यकता है।

नेट फार्म प्रमाणीकरण ठीक से हैश और डाटाबेस के लिए पासवर्ड की दुकान लेकिन इस तार पर साख की रक्षा नहीं करेगा। लेकिन यह सभी वेब ढांचे के लिए सच है।

इस के समूह टुकड़ा आप अपने ऐप्लिकेशन में इस लागू करने या मदद करने के लिए कुछ पुस्तकालयों को ढूंढना होगा का सवाल है।

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