2013-02-18 6 views
28

मुझे वेब एप्लिकेशन के भीतर से एक वेब सेवा कॉल करने में कुछ परेशानी हो रही है और मैं उम्मीद कर रहा था कि यहां कोई भी मदद करने में सक्षम हो सकता है। मैं जो कह सकता हूं, से लगता है कि केर्बेरोज double-hop issue के साथ कुछ करने के लिए। हालांकि, अगर ऐसा है, तो मुझे यकीन नहीं है कि वास्तव में समस्या को ठीक करने के लिए क्या करना है। चीजों को कठिन बनाने के लिए, मेरे पास सक्रिय निर्देशिका खातों में परिवर्तन करने के लिए उचित अनुमति नहीं है, इसलिए मुझे यह जानने की आवश्यकता है कि परिवर्तनों का अनुरोध करते समय क्या पूछना है। मेरी स्थिति में, मुझे वेब एप्लिकेशन से बैकएंड वेब सेवा पर प्रमाण-पत्र (एकीकृत विंडोज प्रमाणीकरण) पास करने की आवश्यकता है ताकि वेब सेवा उचित उपयोगकर्ता संदर्भ के तहत चलती हो।मैं केर्बेरोज डबल-हॉप समस्या को कैसे ठीक कर सकता हूं?

यहाँ मेरी सटीक मुद्दा है:

यह काम करता है

Working scenario

यह काम नहीं करता

Non-working scenario

केवल कार्य परिदृश्य और गैर-कार्य परिदृश्य के बीच अंतर यह है कि कार्य परिदृश्य लोकलहोस्ट पर आवेदन चला रहा है (चाहे डेवलपर का पीसी या सर्वर पर सवाल हो) और गैर-कामकाजी उदाहरण किसी अन्य मशीन पर चल रहा है। दोनों परिदृश्यों के बीच कोड बिल्कुल वही है।

मैं क्या कोशिश की है

  1. डोमेन खाते के लिए एक SPN कि प्रत्येक सर्वर setspn -a http/server1 DOMAIN\account
  2. प्रतिरूपण के विभिन्न तरीकों
  3. प्रतिरूपण कोड using(...) निकाला जा रहा है और क्रियान्वित करने के लिए एप्लिकेशन पूल चलाता जोड़ना ऐप पूल खाते के रूप में वेब सेवा कॉल। यह उम्मीद के रूप में काम करता है।

क्या किसी को इस समस्या को ठीक करने के लिए मैं क्या कर सकता हूं इस पर कोई विचार है?

+3

कूल आरेख प्रश्न को समझने में इतना आसान बनाते हैं - धन्यवाद! –

उत्तर

12

मध्यवर्ती सर्वर प्रतिनिधिमंडल के लिए विश्वसनीय होना चाहिए। अन्यथा कोई प्रमाण पत्र नहीं दिया जाएगा और मध्यवर्ती सर्वर मूल ग्राहक का प्रतिरूपण नहीं कर सकता है।

+1

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

+0

आप कई खातों में एसपीएन मैप नहीं कर सकते हैं। सभी एसपीएन को अलग-अलग वन-चौड़ा होना चाहिए। चूंकि आप लोड बैलेंसर के पीछे हैं, तो आप निम्न कोशिश कर सकते हैं: 1. एनएलबी डोमेन से आगे DNS, वास्तविक सर्वर पर DNS को रिवर्स करें। 2. डीएनएस राउंड-रॉबिन के साथ एनएलबी का उपयोग करें। यह निश्चित रूप से काम करता है। –

+0

शायद समस्या समस्या के सीमित ज्ञान के कारण मैंने गलत तरीके से चीजों को समझाया। मैंने शुरुआत में क्या करने की कोशिश की (जो सब कुछ तोड़ दिया) निम्नलिखित आदेशों को चलाने के लिए था: setpn -A http/servername DOMAIN \ webaccount setpn -A http/servername.FQDN DOMAIN \ webaccount –

3

अधिकतर कारण यह नहीं है कि सर्वर 1 सर्वर 2 के लिए एक प्रतिनिधिमंडल टोकन पास नहीं करता है। इसलिए जब सर्वर 2 उस प्रमाणीकरण टिकट का उपयोग कहीं और (शायद एक SQL सर्वर) पर जाने का प्रयास करता है तो यह विफल हो जाता है।

आप WCF के लिए प्रतिरूपण स्तर सेट करना चाहिए फोन

ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation 

http://msdn.microsoft.com/en-us/library/system.servicemodel.security.windowsclientcredential.allowedimpersonationlevel.aspx

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

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