2009-04-17 9 views
28

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

हम एलडीएपी के बारे में थोड़ा अज्ञान हैं और कुछ चीजों के बारे में उलझन में हैं। गलत शब्दावली के संभावित उपयोग से क्षमा करें (याद रखें, हम इसके बारे में थोड़ा अज्ञानी हैं)।

हमें लगता है कि हम यह कैसे काम कर सकते हैं की मूल बातें समझ:

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

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

हम क्या खो रहे हैं?

Btw, हमारे मंच आईआईएस, ASP.Net 2.0, और SQL सर्वर 2005

उत्तर

9

कई विकल्प हैं। यदि आप वास्तव में सक्रिय निर्देशिका के विपरीत एलडीएपी का मतलब रखते हैं, तो मैं शायद एक सुरक्षित चैनल के माध्यम से आपूर्ति किए गए प्रमाण-पत्रों का उपयोग करके एलडीएपी बाइंड करने के लिए System.DirectoryServices.Protocols का उपयोग करना चाहूंगा।

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

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

आप एक एपीआई प्रदान कर सकते हैं जैसे पहचान और एक्सेस प्रबंधन समाधान (आपके माइक्रोसॉफ्ट स्लैंट को देखते हुए, आईएलएम 2 007 को एक उदाहरण के रूप में देखें) आपके सिस्टम के साथ एकीकृत हो सकता है और आपके लिए सभी उपयोगकर्ता खाता प्रबंधन कर सकता है।

1

आप तय करने के लिए कैसे आप अपने आवेदन के भीतर एक खाते में एक LDAP उपयोगकर्ता लिंक करने की योजना की जरूरत है।

उदाहरण के लिए, आपको यह आवश्यक हो सकता है कि एलडीएपी सिस्टम के भीतर उपयोगकर्ता नाम आपके ऐप के भीतर उपयोगकर्ता नाम से मेल खाता हो, या आप किसी को अपने ऐप में प्रत्येक उपयोगकर्ता खाते के भीतर स्पष्ट रूप से एलडीएपी उपयोगकर्ता नाम निर्दिष्ट कर सकते हैं।

एक बार जब आप यह लिंक प्राप्त कर लेंगे, तो आप उपयोगकर्ता प्रमाण-पत्रों का परीक्षण करने के लिए बस एक एलडीएपी बांध निष्पादित कर सकते हैं।

3

हमेशा यह सुनिश्चित करने के लिए प्रमाणीकरण परीक्षण को सत्यापित करना याद रखें कि भेजा गया पासवर्ड खाली नहीं है।

मानक नाम के अनुसार उपयोगकर्ता नाम के साथ बाध्य और कोई पासवर्ड बेनामी बांध नहीं माना जाता है, और ऐसा लगता है कि यह सफल हो गया है! वास्तव में, यह वास्तव में नहीं था।

यह एप्लिकेशन को संभालने का एक मुद्दा है, क्योंकि एलडीएपी सर्वर मानक, एक कष्टप्रद मानक का पालन कर रहा है, लेकिन फिर भी एक मानक है।

2

शायद प्रमाणीकरण बनाम प्राधिकरण

प्रमाणीकरण पर विचार - यह जो उपयोगकर्ता है? प्रमाणीकरण - आवेदन, निर्दिष्ट उपयोगकर्ताओं, समूहों का उपयोग करने में सक्षम होना चाहिए?

वर्तमान में आप प्रमाणीकरण के माध्यम से प्राधिकरण जिसका अर्थ है कर रहे हैं क्योंकि केवल जो अपने अनुप्रयोग के लिए पंजीकृत हैं इसका इस्तेमाल करने की अनुमति दी जाती है।

आप तो

  • अपने कस्टम डेटासंग्रह के बजाय एक निर्देशिका का उपयोग करते हैं उपयोगकर्ता को प्रमाणित करने निर्देशिका कनेक्शन विधि का उपयोग
  • आप के लिए मुफ्त प्रमाणीकरण प्राप्त (हो सकता है) - उपयोगकर्ता खिड़कियों लिए जाना जाता है, खिड़कियां iis और sqlserver की पहचान कर सकते हैं, शायद उपयोगकर्ता से पूछने की आवश्यकता नहीं है कि वे कौन हैं। एक विशेष समूह के लिए सीमा कनेक्शन -
  • आप से प्राधिकरण है और प्रतिबंध लागू करने की आवश्यकता अधिक उपयोगकर्ताओं के पास पता चल जाएगा।
  • एसक्यूएल सर्वर में आपके ऐप डेटा के बजाय निर्देशिका में उपयोगकर्ता डेटा स्टोर कर सकता है।

अपने उपयोगकर्ताओं को वास्तव में जेनेरिक LDAP चाहते हैं, तो आप (सी) ldap_connect, ldap_bind_s (सी #) LDAPConnection System.DirectoryServices.Protocols

या फिर से वापस ई पर गौर करने के लिए इस Demystified .Net App single sign on

1

मदद कर सकता है जिस तरह से यह काम करता है चाहता हूँ हमारी प्रणाली:

  • एक उपयोगकर्ता वेब एप्लिकेशन पर जाता है, REMOTE_USER सर्वर चर उपयोगकर्ता टोकन माना जाता है
  • लॉगिन कोड एक खोज-विशिष्ट खाते के साथ LDAP निर्देशिका को जोड़ता है
  • लॉगिन कोड एक ldap के लिए लग रहा है खाता "मैच" REMOTE_USER
  • लॉगिन कोड तो हमारी प्रणाली में किसी खाते से उस खाते से मिलान करने की कोशिश करता है
  • तो मिलान सभी तरह के माध्यम से संभव है, मान उपयोगकर्ता का मिलान नहीं हुआ खाते के रूप में प्रवेश किया था, सामान्य रूप से

इस तरह उपयोगकर्ता हमारे एप्लिकेशन के अंदर उनकी खिड़कियों डोमेन प्रमाणीकरण का पुन: उपयोग कर सकते हैं जारी है।

1

यहां एक उपयोगी सॉफ्टवेयर है जो जेएसओएन-आरपीसी का उपयोग कर एलडीएपी निर्देशिकाओं को वेब पर एक्सेस करने की अनुमति देता है: Json2Ldap