2011-05-19 14 views
5

का उपयोग करना चाहता हूं, तो मैं केर्बेरोस के माध्यम से प्रमाणित करने के लिए निम्न कोड का उपयोग कर रहा हूं।मैं .NET Windows प्रमाणीकरण कैसे स्थापित करूं - नाम हमेशा "आईआईएस APPPOOL क्लासिक .NET AppPool" के रूप में दिखाई देता है जब मैं इसे वास्तविक उपयोगकर्ता

IntPtr logonToken = WindowsIdentity.GetCurrent().Token; 
string authenticationType = "WindowsAuthentication"; 
WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken, authenticationType); 

//windowsIdentity.Name == equals "IIS APPPOOL\Classic .NET AppPool" when I want it to be the user 

यह तब होता है जब मैं अपने .NET अनुप्रयोग को वेब सर्वर को चलाने और चलाने का प्रयास करता हूं। अगर मैं डीबगिंग के लिए अपनी मशीन पर स्थानीय रूप से कोड चलाता हूं, तो यह मेरे उपयोगकर्ता आईडी नाम संपत्ति में दिखाता है। यह वेब सर्वर पर काम करने के तरीके के बारे में कोई सुझाव है?

उत्तर

0

आपकी समस्या यह है कि आपका आईआईएस सर्वर अपनी पहचान के तहत चलता है, न कि आपके। इसलिए, WindowsIdentity.GetCurrent().Token आईआईएस कार्य प्रक्रिया 'पहचान देता है। enter image description here

+0

धन्यवाद। लेकिन मैं इसे कैसे बना सकता हूं ताकि यह उस व्यक्ति को पहचान सके जो साइट पर टक्कर मार रहा है? मैं इसे सिर्फ एक व्यक्ति से जोड़ना नहीं चाहता हूं, यह किसी भी व्यक्ति से जुड़ा होना चाहिए। कम से कम यही मेरा अंतिम लक्ष्य है। – Eric

+0

फिर आपको विंडोज प्रमाणीकरण प्रदाता पर पढ़ने की आवश्यकता है: http://msdn.microsoft.com/en-us/library/907hb5w9.aspx आपका दृष्टिकोण उपयोगकर्ताओं के लिए नहीं है, 'WindowsIdentity.Currect() 'चल रहा है ** प्रक्रिया ** पहचान – Zruty

4

आप enable impersonation in web.config की जरूरत है::

ASP.NET कॉन्फ़िगर करने के लिए विंडोज पहचान के प्रतिरूपण

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

<configuration> 
    <system.web> 
    <identity impersonate="true" /> 
    </system.web> 
</configuration> 

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

+0

फिर से धन्यवाद। क्या मेरे पास काम करने के लिए मेरे कोड या आईआईएस में बदलने की ज़रूरत है? उपयोगकर्ता अब इस रूप में दिखाया गया है: "NT AUTHORITY \ IUSR" – Eric

+0

ओह, क्षमा करें। मैंने थोड़ी देर के लिए ऐसा नहीं किया है - मैं यह देखने के लिए अपने पुराने प्रोजेक्ट कोड को स्किम कर दूंगा कि मैं कुछ और खोज सकता हूं या नहीं। एमएसडीएन पेज का कहना है कि यह [HttpContext.User] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.user.aspx) है, हालांकि यह बदलता है। – Rup

+0

ठीक है। जब भी आपको मौका मिलता है तो इसकी सराहना की जाएगी। धन्यवाद! – Eric

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