لا يمكن تمرير البيانات كلمة المرور في إيكريدينتيالس من عميل WCF لخدمة WCF 4.5 إطار عمل.NET

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية3082119
الأعراض
في عميل اتصالات Windows (WCF), يمكنك إنشاء واجهة جديدة إيكريدينتيالس من فئةنيتوورككريدينتيال باستخدام اسم المستخدم وكلمة المرور التي تم تحديدها. ثم إجراء استدعاء لأسلوب عقد WCF يأخذ إيكريدينتيالس كوسيطة. يمكنك العثور على أنه بعد تحويل إيكريدينتيالس التي يتم تلقيها في خدمة WCF إلى بيانات اعتماد شبكة، تحتوي الخاصية كلمة المرور سلسلة فارغة. ومع ذلك، ما تزال تحتجز الخاصية Usernameقيمة صالحة وصحيحة.
السبب
هذه هي مشكلة معروفة التي تم تقديمها في Microsoft.NET Framework 4.0 عند خاصية جديدة، تم إضافة سيكوريباسوردإلى فئة نيتوورككريدينتيال. هذه الخاصية بالكتابة فوق سلسلة كلمة المرور الأصلية عندما يتم إلغاء تسلسل الخاصية سيكوريباسورد على الجانب الخدمة. تعد الخاصية سيكوريباسوردمن النوع سيكوريسترينج. وفقا للتصميم، ليس من تسلسل وإرسالها. ومع ذلك، من الكتابة فوق سلسلة كلمة المرور الأصلية باستخدام قيمة فارغة. يعتبر هذا السلوك حسب التصميم.
الحل
لحل هذه المشكلة، عليك تمرير معلومات اسم المستخدم وكلمة المرور للخدمة صورة مستقلة عن بيانات اعتماد الشبكة. يمكنك القيام بذلك عن طريق إنشاء كائن معرف من قبل التطبيق للاحتفاظ ببيانات الاعتماد وتمرير بيانات الاعتماد إلى أسلوب خدمة WCF جديد يقبل كائن كوسيطة أسلوب. أن هذا الكائن المعرفة من قبل التطبيق تحتوي على معلومات حساسة، ويريكوميند إرسال البيانات عبر اتصال مشفر إلى خدمة WCF باستخدام https أما النقل الأمان أو أمان طبقة الرسالة.
معلومات أخرى
يعرض فولووينجيكسامبلي خدمة WCF بإعادة إنتاج المشكلة. خدمة WCF بالعقد ما يلي:

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
الواجهة العمومية إيسيرفيسي
{

[أوبيراتيونكونتراكت]
سلسلة GetData(ICredentials value)؛
}

يتم استخدام عميل الخدمة كما يلي:

سفككلينت iCredService.ServiceClient = iCredService.ServiceClient() جديدة؛
إيكريد إيكريدينتيالس = System.Net.NetworkCredential الجديد ("أي بي سي"، "1234")؛
نتيجة سلسلة نتائج = = svcClient.GetData(iCred)؛

باستخدام Visual Studio وتعيين نقطة توقف في الخدمة القيمة. وسوف تكون كلمة المرور فارغة. عند فحص windows المحلي Microsoft Visual Studio، يمكنك رؤية النص التالي:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
المجال "سلسلة"
كلمة مرور "سلسلة"
+SecurePassword{System.Security.SecureString}System.Security.SecureString
سلسلة "ABC" اسم المستخدم
سيكوريباسورد نيتوورككريدينتيال إيكريدينتيالس WCF

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 3082119 - آخر مراجعة: 08/28/2015 19:13:00 - المراجعة: 1.0

Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5, Windows Communication Foundation 4, Windows Communication Foundation 4.5

  • kbmt KB3082119 KbMtar
تعليقات