كيف هي كلمة مرور داخل system.net.crededialcache.defaultcredentials مشفرة؟

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

سؤال

إذا قمت بتمرير بيانات اعتماد المستخدمين الحاليين إلى WebService باستخدام System.Net.crededialCaches.defaultcredentials، على الطريقة التي سوف يتم نقل المعلومات؟ لا أعتقد أنه سيكون نصا واضحا، لذلك يجب تشفير وثائق التفويض، ولكن كيف هم؟

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

المحلول

ذلك يعتمد على ما طلبات الخادم في استجابة الرأس.

على سبيل المثال، إذا قمت بإجراء طلب رأس إلى خدمة الويب الخاصة بك وواحد من رؤوس HTTP في استجابةها هو "مصادقة WWW-: NTLM"، ثم سيتم تشفير بيانات الاعتماد المخزنة في DefaultCredentials باستخدام NTLM ثم إرسالها / البريد / وضع / أيا كان. لضمان حدوث ذلك، تحتاج إلى التأكد من تكوين خادم الويب الخاص بك لطلب مصادقة NTLM. في IIS، هذه هي حالة اختيار "مصادقة Windows المدمجة". أنا لست متأكدا من Tomcat، ولكن هذا المشنور تبدو ذات صلة.

ومع ذلك، إذا كان خادم الويب الخاص بك مع "مصادقة WWW للمصادقة: Basic" لمورد معين (من شأنه أن ينطوي على إرسال الاعتمادات في نص واضح، مشفن (ملاحظة: ليس مشفر) ك Base64)، ستحصل على ArgumentException لأنه يعتبر استثناء أمان لإرسال بيانات اعتماد حسابك على المصادقة الأساسية.

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

عادة ما يختار المتصفح عادة أقوى طريقة متاحة لها، وأشك (ولكن لا أعرف بالتأكيد) أن مكتبات .NET سوف تتصرف بنفس الطريقة.

تعديل

طالما خادم الويب الخاص بك فقط طلبات NTLM لخدمة الويب الخاصة بك، يمكنك أن تكون متأكدا من أن أي عميل معقول لن يرسل بيانات الاعتماد في نص واضح. باستخدام الفئات الصافية في .NET Framework، يمكنك التأكد من أنه إذا كنت تستخدم DefaultCredentials، ولا تقوم بحقن رأس مصادقة أساسي يدويا بنفسك، فسيتم إرسال بيانات اعتمادك مشفرة باستخدام NTLM.

سيصل بيانات الاعتماد الخاصة بهم إلى الخادم كصنث مشفرة كبيرة، لأي شخص ولكن خادم الويب، الذي سيشهده لمعرفة أنه يشمل اسم المستخدم وكلمة المرور والمجال الخاص بمستخدم المستخدم الذي قام بتسجيل الدخول حاليا.

سوف ترسل بيانات بيانات الاعتماد DefaultRedentials على أي نوع من التطبيقات المطلوبة الافتراضية. إذا كان تطبيق عميل يعمل بموجب حساب المستخدم، فسيكون بيانات الاعتماد هذا المستخدم. إذا كان تطبيق ASP.NET يتواصل مع خدمة الويب الخاصة بك، فسيستخدم بيانات الاعتماد الخاصة بالحساب الذي يعمل فيه تجمع التطبيقات تحت، بشكل افتراضي، هذا هو NETWORK_SERVICE.

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