2011-12-15 9 views
10

क्या उपयोगकर्ता के प्रतिरूपण के लिए इसे बाद में उपयोग करने के लिए केर्बेरोज टिकट स्टोर करना संभव है?बाद में प्रतिरूपण के लिए केर्बेरो प्रमाणीकरण संग्रहीत

मेरे पास ऐसा परिदृश्य है जहां कोई उपयोगकर्ता सीधे कुछ डेटा संसाधित करने के लिए बाहरी सिस्टम को आमंत्रित करता है। बाहरी प्रणाली एडी में उपयोगकर्ता को प्रतिरूपित/प्रमाणीकृत होने पर निर्भर करती है।

अब कॉलिंग सिस्टम को बदलना है ताकि उपयोगकर्ता और बाहरी प्रणाली के बीच एक कतार बैठे और कतार से काम को विंडोज सेवा द्वारा उस कतार से बाहरी सिस्टम को सौंप दिया गया हो। बाहरी सेवा को उपयोगकर्ता-अधिकारों को सही ढंग से संभालने के लिए इस सेवा को उपयोगकर्ता का प्रतिरूपण करने की आवश्यकता है।

यह देखते हुए कि मैं बाहरी प्रणाली को नहीं बदल सकता और कतार में उपयोगकर्ता नाम और पासवर्ड संग्रहीत नहीं कर सकता, क्या मैं क्यूबेरोज टिकट को सहेज सकता हूं जब उपयोगकर्ता कतार में नए कार्य आइटम जोड़ता है और बाद में उपयोगकर्ता द्वारा सेवा का प्रतिरूपण करता है जब यह बाहरी सिस्टम को डेटा पर हाथ रखता है। मैं सी # में ऐसा कैसे करूं?

+1

आपकी सेवा किस प्रकार की कतार का उपयोग कर रही है? एक सिस्टम संदेश कतार, एक एमएसएमक्यू? क्योंकि यदि आप जिस कतार का उपयोग कर रहे हैं वह आरपीसी पर आधारित है, तो आपकी सेवा अंतिम उपयोगकर्ता का प्रतिरूपण कर सकती है। – JPBlanc

+0

एक एसक्यूएल सेवा ब्रोकर कतार। – GaussZ

उत्तर

0

इसे सहेजना संभव हो सकता है, लेकिन मुझे लगता है कि टिकट कम रहता है। दुर्भाग्यवश, आप निश्चित रूप से Kerberos double-hop issue पर चले जाएंगे जहां प्रमाणीकरण सेवा से सेवा में विफल रहता है जब तक कि आपके प्रतिनिधिमंडल को आपके नेटवर्क पर ठीक से सेट न किया जाए। सर्वरों को एक दूसरे पर विश्वास करने के लिए कहने के लिए आपको अपनी सक्रिय निर्देशिका पर कुछ एसपीएन (सेवा प्रिंसिपल नेम) सेट अप करने की आवश्यकता होगी।

मैंने किसी भी समय के लिए केर्बेरोज टिकटों को बचाने की कोशिश नहीं की है, इसलिए प्रतिनिधिमंडल और एसपीएन के साथ लड़ने के बाद भी यह काम नहीं कर सकता है।

IIS7 to handle double hop Kerberos tickets और handling it from the networks point of view पर एक और आलेख स्थापित करने पर एक त्वरित पोस्ट है।

मुझे लगता है मैं और अधिक मदद की, और पोस्टिंग कोड और नहीं लेख के हो सकता है इच्छा - लेकिन जैसा कि आप की जांच तो आप इस Kerberos प्रमाणीकरण का अभिशाप है देखेंगे। सौभाग्य!

+0

टिप्पणी के लिए धन्यवाद, लेकिन डबल-हॉप मुद्दे का ध्यान रखा जाना चाहिए। गायब एकमात्र टुकड़ा कोड में केर्बेरोज टिकट प्राप्त कर रहा है और इसे बाद में पुन: प्रतिरूपण के लिए संग्रहीत कर रहा है। – GaussZ

+0

जब आप इसे स्टोर करना चाहते हैं तो आप कब तक बात कर रहे हैं? एक मिनट, दो घंटे? अगर मुझे सही याद है, तो टिकट समाप्त होने से पहले 5 मिनट का जीवन भर रहता है। – Joshua

+0

एक केर्बेरोज टिकट का डिफ़ॉल्ट जीवनकाल 10 घंटे होना चाहिए। इसे afaik नवीकरण करके भी लंबे समय तक बढ़ाया जा सकता है। आपको 5 मिनट की सीमा कहां से मिली? – GaussZ

1
  • संपादित करें: यह निकटतम मैं अपने वास्तविक सवाल का मिल सकता है: यदि आप फिर भी इसमें लगने वाले समय प्रतिरूपण के तहत एक अलग थ्रेड प्रारंभ कर सकते हैं, वहाँ से अनुरोध करते हैं,? कवर के तहत यह आवश्यक होगा (जब तक कि सेवा प्रक्रिया पाठ्यक्रम समाप्त नहीं हो जाती)।

जैसा कि एक माइक्रोसॉफ्ट लड़के ने हमें एक बार बताया था "सुरक्षा वह चीज है जो आपके आवेदन को आपके द्वारा तैनात करते समय काम करती है"। (उनका मुद्दा एक यथार्थवादी सुरक्षा सेटअप के साथ परीक्षण करना था)।

टिकट का जीवनकाल 10 घंटे हो सकता है लेकिन यह तब जारी किया गया था जब यह जारी किया गया था। जब उपयोगकर्ता अनुरोध करता है तब तक इसमें केवल उसमें से एक अंश हो सकता है।

मेरा सुझाव है कि आप आसानी से अंतर्निहित समस्या को एक अलग तरीके से हल करें।

अब आपको कतार की आवश्यकता क्यों है? सिर्फ इसलिए कि बाहरी सेवा चोटी के समय पर दबाया जाता है?

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

वास्तविक समस्या को जानने के बिना, यह कहना मुश्किल है कि कहने के अलावा, ऐसा करने के अलावा - बहुत सारे गॉथस नहीं हैं।

+0

कतार कई आवश्यकताओं/प्रतिबंधों के कारण चुनी गई थी (सेवा 24/7 उपलब्ध नहीं है लेकिन आइटम को कतार में जोड़ने की आवश्यकता है, कतार को विश्वसनीय होना चाहिए (जिसमें रीबूट से बचना शामिल है), बाहरी सेवा चकित होती है, ग्राहक को बाहरी सेवा के लिए काम जोड़ने की ज़रूरत है लेकिन काम शुरू होने या खत्म होने से पहले लॉग ऑफ कर सकते हैं) बाहरी सेवा मेरे नियंत्रण में नहीं है, इस प्रकार कोई "बॉब होने का नाटक" विकल्प जोड़ा जा सकता है। और जब टिकट में कम जीवनकाल हो सकता है, तब भी इसे अधिकतम 10 घंटे से ऊपर नवीनीकृत किया जा सकता है। टीएल; डीआर: कतार एक आवश्यकता है, किसी भी समाधान को रीबूट – GaussZ

+0

@ गॉसज़ से बचाना है: एक समाधान जो रिबूट से बचता है वह एक भयानक सुरक्षा छेद है। इसके बारे में सोचो। ऐसा एक कारण है कि ऐसा करना मुश्किल है - क्योंकि यह एक अच्छा विचार नहीं है। मुझे पता है कि आपने टीएल कहा है, मेरे अन्य सुझावों के लिए डीआर, लेकिन शायद आपको समय लेना चाहिए। सुझाव 1 या 2 आपके सर्वोत्तम दांव हैं। – Ben

+0

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

0

यह समाधान एक बड़ी चेतावनी के साथ आता है, लेकिन टोकन/टिकट के भंडारण के बजाय, आप LsaLogonUser समारोह और विवश प्रतिनिधिमंडल इस्तेमाल कर सकते हैं बिना आपूर्ति साख प्रतिरूपण के लिए एक टोकन प्राप्त करने के लिए, इस समय काम होने के लिए तैयार है dequeued।

इस प्रकार प्रोटोकॉल संक्रमण लागू किया गया है, जिसमें गैर-विंडोज प्रमाण-पत्र (उदा। सार्वजनिक वेबसाइट पर) को ऐसे डोमेन उपयोगकर्ता को मैप किया जा सकता है, जो आंतरिक संसाधनों तक पहुंच के लिए प्रतिरूपित है।

चेतावनी यह है कि यह स्पष्ट रूप से एक विशाल संभावित सुरक्षा छेद है, और LsaLogonUser पर कॉल करने वाली प्रक्रिया को SeTcbPrivilege ("ऑपरेटिंग सिस्टम के हिस्से के रूप में कार्य करें") दिया जाना चाहिए।

यदि टिकट संग्रह करने का कोई तरीका है, तो यह स्पष्ट रूप से बहुत बेहतर होगा, लेकिन पहली बात यह है कि मैंने सोचा था कि जब मैंने प्रश्न देखा तो समाप्ति समय की समस्या थी जिसे @ बेन ने बताया था।

संपादित करें: प्रोटोकॉल संक्रमण और विवश प्रतिनिधिमंडल शामिल जोखिम के व्यापक कवरेज के साथ पर excellent articles की A couple

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