تفشل مراجع DLL مع "Access Enfered" عند استخدام انتحال شخصية لمستخدم Windows غير المحلي

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

سؤال

لدينا خدمة باستخدام WCF والانتحال.

يمكن للمستخدم تسجيل الدخول إلى تطبيق العميل مع بيانات الاعتماد التي تشكل جزءًا من نظام Active Directory.

يسجل المستخدمون جانب الخدمة المنتحل شخصية.

هذا يعمل بشكل جيد عندما يكون المستخدم الذي سجل الدخول هو إعداد مسؤول محلي على جهاز المضيف الخاص بهم.

ولكن تحدث مشكلة عندما تكون مستخدمًا غير محمص (قياسي). نحصل على استثناء يوضح أن الوصول قد رفض "أحد DLLs لدينا". (يحدث على جميع DLLs لدينا)

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

المحلول

كانت هذه في الواقع قضية بسيطة من الأذونات في بيئة النشر.

باستخدام أداة سياسة أمان الوصول إلى الكود (caspol.exe) كانت مجرد مسألة تطبيق الأذونات الصحيحة. يوجد دليل إرشادي MSDN.

كانت سلسلة سطر الأوامر الفعلية

caspol.exe -addgroup 1 -strong -file d: deployment_location wcfservicehost.exe -noname -Noversion FullTrust

تم تنفيذ هذا على مجموعة من الخدمات. نظرًا لأن أرقام الإصدار لدينا كانت تتغير بشكل متكرر باستخدام "noversion" كانت مفيدة ، فإن الخدمة تتطلب أيضًا FullTrust في إعدادنا.

لإعادة استخدام الإصلاح لمختلف الآلات ، قم بإنشاء نص PowerShell (أو ملف الدُفعات) واستخدام معلمة "polchgprompt" لإيقاف تشغيل المطالبات بحيث يمكن تنفيذ البرنامج النصي دون تدخل.

polchgprompt - "تمكين أو تعطيل المطالبة التي يتم عرضها عندما يتم تشغيل caspol.exe باستخدام خيار من شأنه أن يتسبب في تغييرات في السياسة."

هيكل السيناريو:

CasPol.exe -polchgprompt off

--all the individual service calls--
CasPol.exe -addgroup 1 -strong -file D:\deployment_location\WcfServiceHost.exe -noname -noversion FullTrust
...

CasPol.exe -polchgprompt on
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top