هل من الممكن اختراق عميل WCF لتمرير بيانات اعتماد الرسائل مع SSL؟

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

  •  13-09-2019
  •  | 
  •  

سؤال

أنا كتب WCF مخصص ملزمة لفترة طويلة للسماح لي تحميل المزرعة المتوازنة إلى الخدمات المضيفة عبر IIS. كان سبب الربط المخصص هو أن كل خادم لم يكن لديه SSL ولكنه بحاجة إلى القدرة على قبول بيانات اعتماد عميل لاسم المستخدم + كلمة المرور. يحتوي الوكيل أمام هذه المزرعة على SSL حتى يتم تشفير حركة المرور خارج جدار الحماية. تعمل هذه الملزمة المخصصة بشكل جيد ولكن الآن أنا في النقطة التي أحتاج فيها إلى مشاهدة حركة المرور من جهازي محليا وأراد أن أفعل هذا مع SSL في المزيج.

المشكلة هي هذه - على عميل .NET إذا قمت بتعيين وضع الأمان الخاص بي = "TransportWithMessageCredential" يجب أن يكون لدي SSL آخر أحصل على خطأ متعة "مخطط غير صالح، HTTPS المتوقع"

هل من الممكن كتابة شيء مخصص للعميل "تجاهله" أن SSL مفقود ولكن لا يزال السماح لي بتمرير اسم المستخدم + كلمة المرور عبر رأس الصابون؟

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

المحلول

نعم، كتبت وظيفة مدونة حول هذا لفترة من الوقت يسمى "كيفية: SSL Spisthrough مع WCF - Or - TransportWithMessageCeCedSial Over Plain HTTP".

اختصار ذلك هو أنك تحتاج إلى إنشاء الخاصة بك HttpTransportBindingElement Subclass الذي "يكمن" حول توفير الأمن.

نصائح أخرى

هناك الإصلاح العاجل ل .NET 3.5 المزود بحزمة الخدمة SP1 التي تضيف خاصية ANDINGECECURETRANSPORT إلى SecurityBindingelement. سيكون هذا أيضا في .NET 4 بيتا 2.

أفترض، على ملزمة مخصصة، التي تحصل عليها أيضا خطأ إذا كنت تستخدم فقط وضع الأمان = "الرسالة"؟ لم تكن ملزمة مخصصة ضرورية حقا، نظرا لأن (إذا لم أكن مخطئا)، فيمكنك استخدام WshttpBinding مع وضع الأمان = "الرسالة" (لا تتطلب SSL).

بديل آخر هو إنشاء شهادة SSL بنفسك، قم بتثبيته في IIS، وتنفيذ بعض سياسة الشهادات في رمز الاتصال الخاص بك، ولكن هذا عبوس بشكل عام على (كما يرسل أسماء المستخدمين وكلمات المرور عبر قناة غير آمنة).

الخيار الثالث هو تغيير عمليات العقد الخاصة بك إلى قبول أسماء المستخدمين وكلمات المرور (أو نوع من الرمز المميز) كمعلمة، أو تغيير عقود البيانات الخاصة بك حتى تتمكن من إرسال المعلومات إلى جانب أي كائن قد ترسله بالفعل.

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