2008-10-03 14 views
31

यहां मेरा परिदृश्य है। मैंने एक ऐसा एप्लिकेशन बनाया जो काम करने के लिए एकीकृत विंडोज प्रमाणीकरण का उपयोग करता है। Application_AuthenticateRequest() में, मैं अपनी वेबसाइट के उपयोगकर्ता के वर्तमान WindowsPrincipal प्राप्त करने के लिए HttpContext.Current.User.Identity का उपयोग करता हूं।आईआईएस मेरे आवेदन पर पुराने उपयोगकर्ता नाम लौट रहा है

अब यहां मजाकिया हिस्सा है। हमारे कुछ उपयोगकर्ताओं ने हाल ही में शादी कर ली है, और उनके नाम बदल गए हैं। (यानी उपयोगकर्ता का एनटी लॉगिन jsmith से jjones से बदलता है) और जब मेरा एप्लिकेशन उन्हें प्रमाणित करता है, तो आईआईएस मुझे अपना पुराना लॉग इन पास करता है। मैं jsmith को तब तक देख रहा हूं जब तक कि मैं अपने सर्वर को रीबूट नहीं करता! क्लाइंट को लॉगिंग करना काम नहीं करता है। ऐप पूल को पुनरारंभ करना काम नहीं करता है। केवल एक पूर्ण रीबूट।

क्या किसी को पता है कि यहां क्या हो रहा है? क्या मुझे कुछ समस्या है जो मैं इस समस्या को दूषित करने के लिए उपयोग कर सकता हूं? क्या मेरा सर्वर गलत कॉन्फ़िगर किया गया है?

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


शौकीन चावला -

हाँ, उनके UPN अपने लॉगिन नाम के साथ बदल गया था। और मार्क/निक ... यह एक उत्पादन उद्यम सर्वर है ... इसे सिर्फ रीबूट नहीं किया जा सकता है या आईआईएस पुनरारंभ नहीं किया जा सकता है।


(भावी पीढ़ी के लिए) ऊपर का पालन करें:

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

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

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

उत्तर

24

मेरे पास हाल ही में इसी तरह के मुद्दे हैं और जैसा कि रॉबर्ट मैकलीन के answer में बताया गया है, यदि आप उपयोगकर्ताओं के रूप में लॉग इन नहीं कर रहे हैं तो एवीआईडी ​​समूह नीति परिवर्तन काम नहीं करते हैं।

मैं के रूप में वर्णित एलएसए लुक कैश आकार बदलने पाया एमएस KB946358 रिबूट या किसी AppPool या सेवाओं रीसाइक्लिंग के बिना काम किया है।

मुझे यह इसी तरह के प्रश्न के उत्तर के रूप में मिला: Wrong authentication after changing user's logon name

+1

को पुनरारंभ नहीं करना चाहते हैं यह बहुत ही बढ़िया है। यह होना चाहिए। मैं हमेशा के लिए इस KB आलेख की खोज कर रहा था, और इसे कभी नहीं मिला। –

1

आईआईएस को पुनरारंभ करना, पूरी मशीन नहीं, चाल चलाना चाहिए।

+0

सर्वर का पुराना उपयोगकर्ता नाम प्रमाणीकरण सेवा से कैश किया गया है। यह काम करना चाहिए। –

+2

-1: उन्होंने स्पष्ट रूप से कहा कि वह आईआईएस –

1

जब इन उपयोगकर्ताओं के नाम बदल दिए गए, तो क्या आपने केवल उनके एनटी लॉगिन नाम, या उनके यूपीएन नाम भी बदल दिए? यूपीएन नाम उचित नाम हैं, और केर्बेरोस द्वारा उपयोग किए जाते हैं - जो आईडब्ल्यूए के लिए डिफ़ॉल्ट प्रोटोकॉल है; हालांकि, अगर आप सक्रिय नाम में अपना नाम बदलने के लिए क्लिक करते हैं, तो केवल एनटी लॉगिन नाम बदलता है - भले ही वे लॉगिन करने के लिए उपयोग करेंगे (डिफ़ॉल्ट विंडो जीआईएनए का उपयोग करके)। कवर के तहत, विंडोज (नए) एनटी लॉगिन नाम (पुराने) केर्बेरोस नाम का अनुवाद करेगा। यह तब तक जारी रहता है जब तक एडी को एनटी लॉगिन नाम के अनुसार केर्बेरोस नाम अपडेट करने के लिए मजबूर नहीं किया जाता है ...

3

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

अतिरिक्त कारकों को ध्यान में रखना:

  • डोमेन सदस्यता इस प्रभावित हो सकती है, के रूप में सदस्य सर्वर डोमेन सेटिंग्स को प्राप्त कर सके
  • आप अभी भी इस को प्रभावित लेने के लिए एक बार पूरे सर्वर को पुनः आरंभ करने की आवश्यकता हो सकती है (लेकिन तो आपको भविष्य में अपडेट के बारे में चिंता करने की ज़रूरत नहीं होगी)।
  • लॉगऑन प्रदर्शन प्रभावित हो सकता है।

इस प्रकार, मैं आपको उत्पादन पर तैनाती से पहले इस परीक्षण का सुझाव देता हूं (बेशक)।

4

AviD की पहचान की गई समस्या सक्रिय निर्देशिका कैश है जिसे आप registry के माध्यम से नियंत्रित कर सकते हैं। आपके समाधान के आधार पर AVID के समूह नीति विकल्प विफल होंगे या काम करेंगे यदि आप वास्तव में उपयोगकर्ताओं को लॉग इन कर रहे हैं या नहीं।

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

मैं this को लागू करने की सलाह भी दूंगा जो थोड़ा अधिक जटिल लेकिन बहुत कम त्रुटि प्रवण है।

4

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

प्रारंभ -> भागो (या Winkey + आर) और प्रकार नियंत्रण keymgr.dll

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

0

प्रश्न में नए लॉगिन नाम का उपयोग कर आईआईएस चलाता है जो सर्वर पर लॉग इन करें। यह आईआईएस को फिर से शुरू किए बिना या सर्वर को रिबूट किए बिना क्रेडेंशियल रीफ्रेश करेगा।

0

बस एक एफवाईआई के रूप में हमारे पास एक ही समस्या थी। हमारे लिए काम करने के लिए क्या प्रतीत होता है सक्रिय निर्देशिका में जाना और "ताज़ा करना" करना है। इसके तुरंत बाद हमें इस समस्या वाले इंट्रानेट साइटों पर एप्लिकेशन पूल रीसायकल करना पड़ा।

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