سؤال

أحتاج إلى التقاط شهادات X.509 الخاصة بالمستخدم من بطاقاتهم وخريطة إلى جدول مستخدم لمصادقة النماذج في ASP.NET MVC. لقد قمت بإنشاء مشروع MVC (VER 2) في VS 2008 ، تم تكوينه لتشغيله كدليل افتراضي ضمن موقع الويب الافتراضي في IIS المحلي على Vista باستخدام القالب الافتراضي ولكن تمت إضافته لـ ThereHttpSattribut لا تغييرات أخرى. باستخدام مدير IIS المحلي ، قمت بإنشاء شهادة موقعة ذاتيا وقمت بتطبيقها ، ثم قم بتعيين صفحة الحساب/logon.aspx لتتطلب SSL وتتطلب شهادات العميل.

تشغيل في Debug ، عندما أقوم بالنقر فوق رابط "تسجيل الدخول" من صفحة الترحيب (عرض المنزل/الفهرس) ، فإنه يتوجه بشكل صحيح إلى الحساب/logon.aspx باستخدام https ولكن لا يوجد موجه للشهادة. باستخدام Dynatrace (رائع ، http://ajax.dynatrace.com) ، أستطيع أن أرى أن حالة الاستجابة يتم ضبطها على 403 ولكن مرة أخرى ، لا توجد موجه شهادة.

كتحقق من العقل ، قمت بإعداد مشروع تطبيق ويب ASP.NET الافتراضي لتشغيله في دليل افتراضي في موقع الويب الافتراضي (مثل مشروع MVC أعلاه) في Vista وتكوين صفحة Default.aspx لتتطلب SSL ويتطلب شهادات العميل ، كما حدث في مشروع MVC أعلاه. ركضه ، ويعمل بشكل جيد ، وأحصل على موجه الشهادة ويمكنك اختيار CERT وإدخال PIN للبطاقة وقراءة X.509 من request.ClientCertificate كائن في الكود وراء.

تم تعيين تجمع التطبيقات لكلا الدلائل الافتراضية على .NET APPPOOL في وضع خط أنابيب متكامل.

مساعدة؟!

تحديث:Super Kludgy حلول في التقدم. لقد أضفت مجلد "Auth" ولف "getCert.aspx" له علامة SSL/يتطلب شهادات عميل إلى مشروع MVC ثم تمت إضافته "Roates.ignoreroute (" Auth/{*pathinfo} ")" إلى Global .asax. codebehind من getCert.aspx استجابة. تكتب البيانات التي أريدها من X.509. ثم أضفت مكالمة jQuery.get في logon.aspx والتي تستدعي getCert.aspx وإرجاع نتائج موضوع cert كسلسلة إلى div في logon.aspx. أحصل الآن على موجه الشهادة وأحصل على النتائج في عرض MVC الخاص بي ، لكن هذا لا يمكن أن يكون الطريقة للقيام بذلك!

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

المحلول

لدي حل عمل باستخدام مصادقة النماذج وسمة التصريح في فئة وحدة التحكم الأساسية الخاصة بي ، لذا فإن جميع الطلبات غير المصادقة تذهب إلى الحساب/تسجيل الدخول. يقوم زر نشر صفحة تسجيل الدخول بتسجيل إجراء يسمى التفويض الذي تم تزيينه بسمة requireHTTPS التي تثير بشكل صحيح موجه لشهادة العميل. بمجرد تحديد CERT ، فإن Authized Action يعالج تحليل HTTPClientCertificate لمعلومات المستخدم التي أريدها وأقوم بإجراء عملية بحث مطابقة في جدول المستخدمين وتكتب ملف تعريف ارتباط المصادقة. بعد ذلك ، لدي httpmodule يقرأ ملف تعريف الارتباط لإنشاء مدير مخصص في حدث AuthenticatereQuest. كل هذا يعمل بشكل رائع. أفتح سؤالًا آخر للمسألة التالية فيما يتعلق بتكوين IIS لـ "تجاهل شهادات العميل" هنا: https://stackoverflow.com/questions/4141272/iis-6-ssl-client-certificates-configuration

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