2009-10-22 13 views
9

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

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

हम बैकएंड को "विश्वसनीय" एप्लिकेशन के रूप में अपना फ्रंटएंड सेट अप नहीं करना चाहते हैं जो स्वयं को किसी भी उपयोगकर्ता के रूप में प्रमाणित कर सकता है। अगर फ्रंटएंड को हैक किया जाना था, तो यह बैकएंड सिस्टम से भी समझौता करेगा।

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

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

आप यह कैसे करेंगे?

+0

बैक एंड प्रमाणीकरण क्या है? आप इंगित करते हैं कि फ्रंट एंड विंडोज इंटीग्रेटेड (इसलिए एक इंट्रानेट ऐप) है, लेकिन बैक एंड ऐप डब्ल्यूआईए भी है? –

+0

इसके लिए केर्बेरोस _is_ - उदाहरण के लिए हमारे लैन पर उपयोगकर्ता एक वेबसर्वर से कनेक्ट होते हैं जो बदले में SQL सर्वर से जुड़ता है _ उपयोगकर्ताओं को credentials_ का उपयोग करता है। यह हमें उपयोगकर्ता के आधार पर प्रति-तालिका/फ़ील्ड अनुमतियों की अनुमति देता है। यहां कठिनाई यह है कि दोनों प्रणालियों को केर्बेरोज प्रतिनिधिमंडल से अवगत होना चाहिए - विभिन्न टोकन प्राप्त करने के लिए वेबसाइट और बैक-एंड को उसी प्राधिकारी के खिलाफ सत्यापित करने के लिए। मुझे विश्वास नहीं है कि यह सीधे संभव होगा लेकिन आप यूआई और बैक-एंड के बीच एक प्रतिनिधिमंडल-जागरूक प्रॉक्सी स्थापित करने में सक्षम हो सकते हैं। – Basic

उत्तर

0

यहां एक पोस्ट है जो वर्णन करता है कि कैसे केर्बेरोज काम करता है और इसे कैसे सेट अप करें।

ASP.NET passing along Windows Authentication credentials

+0

ठीक है, हाँ, यह मेरी पोस्ट है। :) और यह अगला है। प्रश्न अलग हैं। अगर मैंने केर्बेरोस को सही तरीके से उपयोग कर रहा हूं तो आपके उत्तर में मुझे संदेह हुआ। –

+0

opps बहुत जल्दी क्षमा करें। मैंने सोचा कि यह अजीब बात है कि इस तरह के दो प्रश्न एक साथ इतने करीब आ जाएंगे। – kemiller2002

0

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

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

+0

मैं कहूंगा कि यह दुर्व्यवहार के लिए खुला है और प्रणाली जितनी व्यस्त है, उतनी अधिक संभावना है कि झूठी स्वीकृति होनी चाहिए। यह भी मानता है कि सभी घड़ियों पूरी तरह सिंक में हैं (उम्मीद है कि सच है लेकिन गारंटी नहीं है) – Basic

+0

मैं कल्पना नहीं कर सकता कि यह एक सुरक्षित तरीके से काम करेगा। – Hogan

7

मैं स्पष्ट नहीं कर रहा हूँ आप और आपके उपयोग के मामले के साथ क्या नहीं कर सकते हैं, लेकिन मैं सवाल क्या Kerberos डेलिगेशन के लिए चाहिए था जवाब कर सकते हैं।

पहले चलो इस बारे में बात करते हैं कि केर्बेरोज प्रतिनिधिमंडल से पहले क्या करता है। इस भाग को अच्छी तरह से समझना महत्वपूर्ण है क्योंकि यह सूक्ष्म है।

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

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

तो बिल्ली प्रतिनिधिमंडल क्या है?

प्रतिनिधिमंडल करबरोस मानक जो एक विश्वसनीय स्रोत एक और अंत बिंदु करने के लिए प्रमाणीकरण जारी रखने के लिए अनुमति देता है के लिए किसी Microsoft विस्तार है।

यह आपको "बीच में आदमी" के रूप में कार्य करने की अनुमति देता है - हालांकि इसे कई काम करने की अनुमति देने के लिए स्पष्ट रूप से सेटअप, प्रमाण पत्र स्थापित आदि होना चाहिए। यह सरल से बहुत दूर है।

तो, उदाहरण के लिए, यदि आप किसी को एक वेबसाइट को प्रमाणीकृत हो सकता था और फिर नेट कोड एक ही उपयोगकर्ता के रूप में एक एसक्यूएल सर्वर से कनेक्ट है -: (संपादित https://stackoverflow.com/a/954154/215752 यहाँ एक और एसओ विवरण पर जवाब देने के लिए है) उस उपयोगकर्ता के अधिकारों के साथ डेटा पढ़ें।


अब आप अपने सवाल का जवाब देने के बाद से मुझे यकीन है कि आप क्या करना चाहते हैं नहीं कर रहा हूँ मैं तीन विकल्प मौजूद:

1) आप के रूप में ही उपयोगकर्ता के रूप में वापस अंत प्रणाली से कनेक्ट करना चाहते एक वेबसाइट पर प्रमाणीकरण।

  • इस मामले में केर्बेरोज प्रतिनिधिमंडल सही है - यह वही है जो आप चाहते हैं।

2) आप वेबसाइट पर प्रमाणीकरण करने वाले एक से अधिक उपयोगकर्ता के रूप में बैक एंड सिस्टम से कनेक्ट करना चाहते हैं (उदाहरण के लिए एक सेवा खाता)।

  • इस मामले में आप प्रतिनिधिमंडल नहीं चाहते हैं। बैक एंड के लिए वेबसाइट और केर्बेरोज (एक अलग उपयोगकर्ता के रूप में) केर्बेरोस बहुत अच्छा काम करेंगे।

3) आप बैक एंड सिस्टम से उसी समय उपयोगकर्ता के रूप में कुछ समय और एक अलग उपयोगकर्ता के रूप में कनेक्ट करना चाहते हैं। (उदाहरण के लिए, आपको यह सत्यापित करने की आवश्यकता है कि यह बैक एंड सिस्टम के लिए एक कानूनी उपयोगकर्ता है, लेकिन दूसरी बार सिस्टम खाते के रूप में विश्वसनीय कार्य करना चाहता है। यह (मेरे अनुभव में) सबसे आम उपयोग केस है।)

  • इस मामले में आप दोनों का उपयोग करते हैं। उन कनेक्शनों के लिए प्रतिनिधिमंडल जिन्हें उपयोगकर्ता पहचान को सत्यापित करने की आवश्यकता होती है और फिर उन समय के लिए सेवा खाता पहचान पर वापस लौटें जब आपको बैक एंड तक सिस्टम पहुंच की आवश्यकता होती है। (मेरा एक पिछला सवाल एनईटी प्लेटफ़ॉर्म पर सिस्टम पहचान पर वापस जाने के विवरण के विवरण में गया है How to "un-impersonate" (un-delegate?) in Kerberos देखें।)
+1

यह स्वीकार्य उत्तर होना चाहिए, अच्छा अवलोकन जो ओपी का जवाब देने से पहले कई स्थितियों के लिए प्रासंगिक है। – woody121

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