SSO सक्रिय निर्देशिका के साथ कैसे काम करता है जिससे उपयोगकर्ता पारदर्शी रूप से इंट्रानेट वेब ऐप में लॉग इन होते हैं?


40

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

लेकिन, मैं टॉमकैट डॉक्स से सिंगल साइन ऑन क्या पढ़ता हूं:

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

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

तो, इसके लिए मुझे कल्पना करने के लिए काम करना है:

  • उपयोगकर्ता कुछ पृष्ठ के लिए अनुरोध करता है
  • सर्वर कोई सत्र टोकन नहीं देखता है और फिर क्लाइंट से कुछ क्रेडेंशियल के लिए अनुरोध करता है।
  • उपयोगकर्ता के किसी भी हस्तक्षेप के बिना क्लाइंट ब्राउज़र सर्वर को कुछ क्रेडेंशियल्स प्रदान करता है।
  • फिर, क्लाइंट ब्राउज़र द्वारा प्रदान की गई उन क्रेडेंशियल्स का उपयोग करते हुए यह एक LDAP में एक लुकअप करता है।

मैंने कुछ उदाहरण देखे हैं जो क्लाइंट साइड सर्टिफिकेट का उपयोग करते हैं ... विशेष रूप से DoD PKI सिस्टम, जो मुझे कुछ समझ में आता है क्योंकि उन मामलों में आप क्लाइंट साइड सेर्ट्स का अनुरोध करने के लिए टॉमकैट को कॉन्फ़िगर करते हैं , लेकिन सिर्फ विंडोज़ में लॉग इन करके मैं यह नहीं देखता कि यह कैसे होता है काम करेगा और कौन सी जानकारी ब्राउज़र को सर्वर से पास करेगा आदि। क्या यह NTLM के लिए उपयोग किया जाता है?

जवाबों:


40

सबसे पहले - और यदि अन्य उपयोगकर्ता इस पृष्ठ पर जाने के लिए होते हैं - केवल कुछ प्रमाणीकरण विधियाँ हैं जो आपको तुरंत SSO करने की अनुमति देती हैं। ये NTLM और Kerberos हैं । दूसरी ओर LDAP - आपको तुरंत SSO नहीं देगा।

NTLM वास्तव में NTLMv1 और NTLMv2 है। ये बहुत अलग हैं और गंभीर सुरक्षा मुद्दों के कारण NTLMv1 को हटा दिया गया है। आपको जावा प्रमाणीकरण समाधानों से बचना चाहिए जो NTLMv1 या NTLMv2 का समर्थन करने में सही ढंग से पहचानने में विफल रहते हैं क्योंकि वे केवल अपने दस्तावेज में "NTLM" शब्द का उपयोग करते हैं। संभावना है कि उक्त सुरक्षा समाधान के विकासकर्ता स्वयं को नहीं जानते हैं जो आग से बचने के लिए देखने के लिए और अधिक कारण है।

पारंपरिक विश्वास के विपरीत NTLMv1 और NTLMv2 दोनों Microsoft द्वारा पूरी तरह से प्रलेखित हैं, लेकिन आपको अभी भी ऐसे समाधान मिलेंगे जो 'रिवर्स इंजीनियर' प्रोटोकॉल का दावा करते हैं। यह सच है कि यह Microsoft द्वारा 2006 या 2007 के आसपास के प्रोटोकॉल को प्रमाणित करने से पहले आवश्यक था। वैसे भी NTLMv1 एक नहीं-नहीं है। NTLMv2 प्रति-se के साथ कुछ भी गलत नहीं है, लेकिन Microsoft Kerberos प्रमाणीकरण के पक्ष में अपने सभी उत्पादों में NTLM (किसी भी रूप में) को चरणबद्ध कर रहा है। NTLMv1 लंबे समय से मृत है और NTLMv2 अब केवल उन मामलों में Microsoft द्वारा उपयोग किया जाता है जहां कोई डोमेन नियंत्रक उपलब्ध नहीं है। नीचे पंक्ति: NTLM (किसी भी रूप में) वास्तव में आगे का रास्ता नहीं है। हमें वास्तव में मानकों पर आधारित दृष्टिकोण लेने के लिए Microsoft को सलाम करना चाहिए।

यह आपको केर्बरोस के साथ छोड़ देता है। Microsoft ने HTTP पर प्रमाणीकरण जानकारी की बातचीत और परिवहन के लिए एक प्रोटोकॉल बनाया है। इसे Microsoft उत्पादों में " एकीकृत विंडोज प्रमाणीकरण " के रूप में जाना जाता है, लेकिन इसे SPHOO के नाम से आधिकारिक मानक के रूप में देखा गया है । यही वह चीज है जिसकी आपको तलाश होनी चाहिए। SPNEGO अंतर्निहित प्रमाणीकरण तंत्र के रूप में NTLMv2 और Kerberos दोनों का समर्थन करता है, लेकिन उपरोक्त कारणों से आपको NTLMv2 के बजाय Kerberos को लक्षित करना चाहिए।

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

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


2
धन्यवाद, यह स्वीकार किए जाते हैं जवाब। सरकार की सीएसी कार्ड की तरह, एक संकेत है कि बिना लॉग-इन की अपनी सूची में जोड़ने के लिए एक चीज है x509 प्रमाणपत्र लॉगिन ...।
ब्लेक 3r

यह एक शानदार जवाब है, भले ही यह 6 साल पुराना हो! अगर मैं कर सकता तो मैं x10 को बढ़ा देता!
टिम एस।

2

Windows सक्रिय निर्देशिका वातावरण में, एकल साइन ऑन का उपयोग आंतरिक वेब पेज पर जाने के लिए किया जाता है, जो आपके Windows लॉगिन अनुमतियों को ले जाता है और वेब सर्वर उन पर कार्य कर सकता है। यह ऐसा कुछ है जिसके लिए NTLM का उपयोग किया जाता है, लेकिन नए कार्यान्वयन इसके बजाय Kerberos का उपयोग करते हैं।

यदि आप एक शेयरपॉइंट सर्वर वेबसाइट खोलते हैं, तो यह पता है कि आपको लॉगिन उपयोगकर्ता नाम और पासवर्ड की आवश्यकता के बिना कौन है, लेकिन यह केवल उसी वेबसाइट पर आंतरिक वेबसाइटों के लिए काम करता है, मुझे नहीं लगता कि सार्वजनिक वेबसाइट पर काम करने के लिए यह बहुत मायने रखता है। (अगर आप "वर्चुअल होस्ट" का मतलब अपाचे vhost में या आउटसोर्स होस्ट सर्वर के रूप में नहीं बता सकते हैं)।

यहाँ एक Microsoft दस्तावेज़ है जिसमें बताया गया है कि कैसे Kerberos प्रमाणीकरण IIS / ASP.Net पर चलने वाले वेब सर्वर पर काम करता है: http://msdn.microsoft.com/en-us/library/ff647076.aspx

Apache / Tomcat / Java के साथ करना संभव है। यहां एक यूके यूनिवर्सिटी के कार्यान्वयन का वर्णन करने वाला एक पीडीएफ है: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketfortrueSingleSignOn.pdf और इसके लिए एक कोडप्लेक्स प्रोजेक्ट: http://tomcatspnego.codeplex.com/ और Openfire में कुछ हैं आम तौर पर यहाँ जावा / केर्बरोस के साथ काम करने के लिए दस्तावेज़ीकरण ( http://community.igniterealtime.org/docs/DOCZ10 )।


0

लगता है जैसे आप बता रहे हैं कि Microsoft एकीकृत विंडोज प्रमाणीकरण के रूप में क्या संदर्भित करता है।

ऐसा लगता है कि इस लेख के आधार पर टॉमकैट विंडोज ऑथेंटिकेशन का समर्थन करता है ।


-1

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

SingleSignOnValve वह नहीं है जो आप ढूंढ रहे हैं। यदि आप Tomcat 7 का उपयोग करते हैं, तो आप तुरंत SpnegoAuthenticator का उपयोग कर सकते हैं, लेकिन 6 पर आपको इसका उपयोग करना होगा


थोड़ा भ्रमित ... पहला और दूसरा वाक्य विरोधाभास लगता है। कर्बरोस के साथ उपयोगकर्ता को लॉगिन करने के लिए प्रेरित नहीं किया जाता है?
ब्लैक 3 आर

1
नहीं, वे नहीं। बड़ी तस्वीर देखें, कर्बरोस के लिए धन्यवाद उपयोगकर्ता एक बार मैन्युअल रूप से अपनी साख में प्रवेश करता है और उसके बाद हर लॉगिन उसकी ओर से स्वचालित रूप से होता है। इसका मतलब यह नहीं है कि कोई लॉगिन तब नहीं होता है। यह आपने लिखा है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.