سؤال

سيناريو:

  • يقوم العميل باستدعاء WebService A على شبكة LAN.يتم تشغيل WebService A ضمن تجمع التطبيقات ذو الهوية "خدمة الشبكة".
  • تقوم WebService A ببعض الأعمال، وتستعد للاتصال بـ WebService B.
  • تتطلب WebService B شهادة عميل (*.cer) وSSL.
  • WebService A موجود على خادم Windows 2003 مخصص.
  • كل شيء يعمل في بيئة التطوير كما ينبغي (لكن المطور الذي يتمتع بامتيازات المسؤول يتم تسجيل دخوله دائمًا محليًا (ليس من المستغرب!).
  • يتم تخزين الشهادات على القرص في C:\MyCertificates\
  • يتم تطبيق الشهادة في وقت التشغيل بنجاح في Dev باستخدام هذا المقتطف: myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

مشكلة:تستدعي WebService A WebService B، والاستثناء الذي تم إرجاعه هو:

فشل الطلب في حالة HTTP 403:مُحرَّم

وهذا يعني حقًا أنه لم يتم إرسال الشهادة في الطلب إلى WebService B.

أفترض أن تثبيت هذه الشهادة في المتصفح ليس حلاً.عادةً ما تكون إعدادات المتصفح لكل مستخدم، وأحتاج إلى منح الشهادة للمستخدم الذي تعمل خدمة الويب بموجب بيانات اعتماده.(على سبيل المثالخدمة الشبكة أو النظام أو أي شيء موجود في إعدادات IIS AppPool).

سؤال: كيف يمكنني منح الوصول أو الارتباط لشهادتي الموجودة في موقع الدليل المحدد لخدمة الشبكة أو أي حساب آخر غير مستخدم؟

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

المحلول

قد تكون مقالة قاعدة معارف Microsoft هذه مفيدة:

كيفية الاتصال بخدمة ويب باستخدام شهادة عميل للمصادقة في تطبيق ويب ASP.NET (MS KB901183)

ستكون خدمة الويب الخاصة بك "أ" بمثابة تطبيق ASP.NET الذي يستدعي خدمة الويب كما هو موضح في المقالة.

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