5

आईआईएस में मुझे मिल गया है:आईई/आईआईएस एकीकृत प्रमाणीकरण समस्या

http://myserver/myapplication
http://myserver/reports

रिपोर्ट में ऐप तथ्य जो खिड़कियों प्रमाणीकरण का उपयोग करता में सेवाएं रिपोर्ट कर रहा है। myapplication एक asp.net अनुप्रयोग है जो प्रपत्र प्रमाणीकरण का उपयोग करता है।

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

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

यदि मैं आईआईएस में मैपप्लिकेशंस के लिए विंडोज प्रमाणीकरण जोड़ता हूं तो सब कुछ किसी भी ब्राउज़र के साथ ठीक काम करता है।

ऐसा क्यों हो रहा है? आईई में एक बग या मैं कुछ याद कर रहा हूँ?

उत्तर

13

यह आईई में एक बग है, और HTTP पर एनटीएलएम/नेगोशिएट (उर्फ एकीकृत) प्रमाणीकरण के डिजाइन में एक बग सॉर्ट करें।

एनटीएलएम/वार्तालाप कनेक्शन-उन्मुख ऑथ प्रोटोकॉल हैं, जो HTTP वास्तव में के लिए डिज़ाइन नहीं किया गया था। नतीजतन, जब आपको अपने सर्वर पर एक पेज के लिए इस ऑथ तंत्र की आवश्यकता होती है, तो IE आमतौर पर मान लेगा कि सर्वर पर अन्य पृष्ठों की एक ही आवश्यकता है।

इसके अलावा, प्रदर्शन और सुरक्षा कारणों के लिए, अगर आईई उम्मीद एक निगोशिएट किसी दिए गए पोस्ट अनुरोध के लिए/NTLM चुनौती है, तो यह पहली बार एक 0 बाइट पोस्ट, भेज देंगे सर्वर की उम्मीद कर एक HTTP/401 चुनौती वापस जाने के लिए जो करने के लिए यह प्रमाणित करेगा और फिर पोस्ट बॉडी को सही तरीके से भेज देगा।

हालांकि, आपके मामले में, जिस फ़ोल्डर को एकीकृत ऑथ की आवश्यकता नहीं है उसे 0 बाइट पोस्ट प्राप्त होता है और कहता है "एचआरएम, अजीब, एक 0 बाइट पोस्ट। ठीक है, HTTP/200, यहां पृष्ठ है जैसे आप चाहते हैं इस्तेमाल किया गया। "

क्योंकि आईई को कभी भी 401 चुनौती नहीं मिलती है, यह वास्तव में पोस्ट बॉडी भेजता नहीं है।

(फिडलर आपको HTTP कनेक्शन पुन: उपयोग करने के तरीके के कारण थोड़ा सा भ्रमित कर सकता है)।

कामकाज यह सुनिश्चित करना है कि यदि आप मेजबान पर एकीकृत लेखक का उपयोग कर रहे हैं, तो इसे हर जगह उपयोग करें।

+0

धन्यवाद एरिक, इसके लिए क्या तय होगा? आईई को फ़ायरफ़ॉक्स की तरह पूरे पोस्ट संदेश भेजना चाहिए, है ना? मुझे लगता है कि आईई 8 काम करता है, अभी तक इसका परीक्षण नहीं किया है। –

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