मैंने उपयोगकर्ता को सफलतापूर्वक प्रतिरूपण करने में कामयाब रहा है। LogonUser इंटरऑप का उपयोग करना, उदा।एएसपी.नेट ने मेरे अधिकार का सम्मान करने से इंकार कर दिया।
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonSessionType logonType,
LogonProvider logonProvider,
out IntPtr token);
यह ठीक काम करता है। जब मैं अपनी तत्काल खिड़की पर जाता हूं और WindowsIdentity.GetCurrent().Name
दर्ज करता हूं, प्रतिरूपित उपयोगकर्ता मेरे CurrentUser के रूप में दिखाता है। जब मैं इस उपयोगकर्ता को रिलीज करता हूं, तो यह मेरे असली उपयोगकर्ता पर वापस जाता है। यहां कोई समस्या नहीं है - मैं पूर्वाह्न प्रतिरूपण कर रहा हूं।
हालांकि, जब मैं उपयोगकर्ता की पहुंच है कि एक साझा करने के लिए एक फ़ाइल में लिखने का प्रयास करते हैं, मैं:
Access to the path [path name] denied.
।
मैं मैन्युअल रूप से विंडोज़ में लॉग इन करने में सक्षम हूं क्योंकि उपयोगकर्ता मैं प्रतिरूपण कर रहा हूं, नेविगेट किया है, और साझा करने के लिए एक फाइल लिखी है। उपयोगकर्ता को निश्चित रूप से उस निर्देशिका में व्यवस्थापकीय निजीकरण है जो मैं लक्षित कर रहा हूं।
मैं अंतिम उपयोगकर्ता को फ़ाइल अपलोड करने की अनुमति दे रहा हूं, और HttpPostedFileBase
ऑब्जेक्ट का उपयोग करके, इस शेयर में एक फ़ाइल लिखें। अनिवार्य रूप से, मैं फ़ाइल अपलोड करने के लिए कोड के ब्लॉक में प्रतिरूपण प्रतिबंधित कर रहा हूं। एक बार यह समाप्त होने के बाद, यह मूल प्रमाणीकृत एलडीएपी उपयोगकर्ता पर वापस जाता है उदा।
imp = Impersonation.ImpersonateUser("someuser","somepassword");
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
...
hpf.SaveAs(path);
Impersonation.StopImpersonating(imp);
पथ सही है।
जब मैं SaveAs
विधि का उपयोग कर फ़ाइल को सहेजता हूं, तो क्या यह मेरे प्रतिरूपण का सम्मान करता है?
क्या यह किसी अन्य खाते के तहत फ़ाइल लिखने का प्रयास कर रहा है, मुझे पता नहीं है? और यदि हां, तो मैं इसे कैसे बदल सकता हूं?
SaveAs
विधि का उपयोग कर पूरे नियंत्रण में प्रतीत नहीं होता है - एक एकल ओवरलोड नहीं। क्या इस ऑब्जेक्ट का उपयोग करने के लिए कोई और विकल्प है जो मुझे मेरे प्रमाण-पत्रों पर अधिक नियंत्रण देगा?
आपने लेखक को गलत लिखा है! ;) –
क्या आपने लक्ष्य मशीन के इवेंट लॉग में देखा है कि क्या कोई पहुंच अस्वीकार या लॉगिन त्रुटियां थीं? – NotMe
क्या आपने नीचे सुझाए गए डबल-हॉप की जांच की थी? – ironsam