ASP.NET قراءة الملفات من مشاركة كلمة مرور محمية

StackOverflow https://stackoverflow.com/questions/1496068

  •  19-09-2019
  •  | 
  •  

سؤال

لدي موقع ويب ASP.NET على خادم Windows 2003، يحتاج إلى الوصول إلى الملفات من مشاركة شبكة. حصة الشبكة محمية بكلمة مرور وتحتاج إلى اسم مستخدم وكلمة مرور لتوفيرها.

يمكنني استخدام المصادقة القائمة على النماذج على الموقع الإلكتروني وليس Windows مقرها.

لذا فإن مشكلتي هي، عندما أحاول قراءة أي ملف من NetworkShare باستخدام التعليمات البرمجية أدناه، فإنه يلقي الوصول إلى Directory Informshare Directoryfofo Directory = New DirectoryInfo (" Testserver Share")؛

لذلك حاولت استخدام الانتحال من خلال توفير اسم المستخدم وكلمة المرور الخاصة بمشاركة الشبكة إلى مكالمة وظيفة الانتحال، ومع ذلك فاشل المكالمة بوضوح لأن اسم المستخدم لا يوجد في WebServer ASP.NET. لذلك بعد ذلك مررت باسم المستخدم وكلمة المرور لتسجيل الدخول الموجود على خادم الويب، لذلك هذه المرة تعمل مكالمة الانتحال شخصية، ومع ذلك لا يزال لا يزال بإمكانه الوصول إلى مشاركة الشبكة 'Cuz اسم مستخدم مشاركة الشبكة وكلمة المرور مختلفة.

لذلك أخيرا، قمت بإنشاء اسم المستخدم / كلمة المرور نفسها بالضبط على خادم الويب الذي يطابق مشاركة الشبكة. هذه المرة وظيفة وظيفة الانتحال الدالة تعمل وكذلك مشاركة الشبكة. أنا قادر على قراءة بنجاح من المشاركة.

لذلك سؤالي هو، هل هناك طريقة يمكنني قراءة مشاركة الشبكة دون إضافة اسم المستخدم في خادم الويب. "Cuz في كل مرة يتغير تسجيل الدخول إلى شبكة الشبكة، سأضطر مرة أخرى إلى جعل اسم مستخدم جديد في WebServer أيضا. التي ليست مثالية.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

تتمثل طريقة "اليمين" للقيام بذلك بتشغيل AppPool's WebServer كهوية يمكنها الوصول إلى المشاركة. بهذه الطريقة، يتم تخزين بيانات الاعتماد الوحيد فقط بأمان في تكوين IIS (بدلا من التعليمات البرمجية الخاصة بك أو في ملفات التكوين القابلة للقراءة). يعد وضع WebServer و FileServer في نفس مجال Windows (أو المجالات المختلفة مع الثقة) أسهل طريقة، ولكن يجب أن يعمل شيء "نفس اسم المستخدم / كلمة المرور" هناك أيضا.

إذا كنت لا تهتم بوضع أسماء المستخدمين / كلمات المرور في التعليمات البرمجية أو التكوين، فيمكنك P / Invoke To WnetAdConnection2 وتمرير اسم المستخدم / كلمة المرور - ثم يجب أن تكون قادرا على الوصول إلى المشاركة. لا يتطلب هذا خادم الويب أن يكون لديك حساب مطابق، ولكن يجب عليك حقا تأمين كلمة المرور (انظر إلى System.Security.cryptography.ProtTedata لتخزين التسجيل المشفر).

نصائح أخرى

جرب هذا

WebRequest request = WebRequest.Create( "http://server/file.xml" );
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential( "user", "pass" );

request.GetResponse();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top