استخدام Windows Identity Foundation لتسجيل الدخول إلى تطبيق ASP.NET

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

  •  21-09-2019
  •  | 
  •  

سؤال

يخبرني المشرف في المكتب أنه رأى مظاهرة مع إصدار ما قبل الإصدار من Microsoft "Geneva" (Now Windows Identity Foundation) حيث قام مطور بما يلي:

  1. قام بإعداد نوع من تطبيق ASP.NET على الويب حيث يمكن للمستخدم تسجيل الدخول باستخدام نظام سجل مخصص. وراء الكواليس ، يقوم تطبيق الويب بتسجيل المستخدم كمستخدم في Directory.

  2. يقوم المستخدم بتسجيل الدخول.

  3. بمجرد تسجيل الدخول للمستخدم ، يتم تشغيل مؤشر ترابط تطبيق الويب ASP.NET كمستخدم يتم تسجيله في مدة جلسة المستخدم ويمكنه الوصول إلى الموارد على الشبكة (مثل تشغيل استعلامات SQL على الجداول التي يتم التحكم في الوصول إلى Active Directory)

الخطوات 2) و 3) هي نفسها تمامًا باستخدام إعداد "مصادقة Windows المتكاملة" في علامة التبويب "أمان الدليل" لإعدادات موقع الويب في IIS. الخطوة 1) مختلفة لأننا نستخدم نظام تسجيل الدخول المخصص بدلاً من مصادقة Kerberos.

نريد إعداد أحد تطبيقاتنا للعمل تمامًا كما هو موضح في 1) و 2) و 3). ومع ذلك ، فإن جميع الوثائق التي رأيتها فيما يتعلق بـ Windows Home Foundation تدور حول مساحة البطاقة والأمان الموحدين. لدينا مصلحة في استخدام أي من هذه التقنيات في الوقت الحالي.

نريد فقط أن نكون قادرين على تسجيل الدخول إلى حسابات Active Directory وراء الكواليس.

نعم ، لقد جربنا ActiveDirectoryMembershipProvider مع Forms Authentication, ، ولكن من الكامل للوصول إلى الموارد على الشبكة التي تتطلب انتحال شخصية في كل صفحة!

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

ها أنا الآن. لقد وجدت بعض الوثائق على MSDN تشير إلى أن هناك ثلاثة هويات مختلفة تستخدم في ASP.NET: الهوية المحددة بواسطة HttpContext.Current.User, ، الهوية المحددة بواسطة Thread.CurrentPrincipal, وأخيرا الهوية المحددة بواسطة WindowsIdentity.GetCurrent. حلقة الوصل

في مثال واحد على المكان الذي أرغب في استخدام العملية التي أتطلع إلى تصميمها ، أريد إجراء استعلام SQL كمستخدم مسجل. في مصحح الأخطاء الخاص بي ، أرى أنني أقوم بسهولة بتعيين مستخدمي HTTPContext وخيط مؤشرات الترابط على المستخدم المسجلين. ومع ذلك ، عندما أقوم بالاتصال بخادم SQL باستخدام مصادقة Windows ، فإنه دائمًا ما يتصل دائمًا باسم WindowsIdentity.GetCurrent المستخدم وهذا المستخدم دائمًا دائمًا ما يكون هوية عملية ASP.NET إلا إذا كنت أستخدم مصادقة Windows مع انتحال شخصية. لا يمكنني بالتأكيد استخدام مصادقة Windows مع طلبي لأنه يجب على المستخدمين تسجيل الدخول عن طريق تشغيل أغنية Magic Flute و Windows المصادقة ليس لها دعم لتسجيل الدخول بأغاني Magic Flute.

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

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

المحلول

يتيح لك WIF تكوينه بحيث يكون خرائط الهوية القائمة على المطالبات لحساب إعلان ، أو قد تكون المطالبة إما مطالبة بالهوية الاتحادية ، أو يتم تسليمها عبر بطاقة معلومات. C2WTS يؤدي هذه الوظيفة.

حتى عندما يتم خريطةه بسبب التفويض ، فستضطر دائمًا إلى التفويض إذا كنت ترغب في استخدام هوية الإعلان IIS - هذا هو ما يعمل ، إلا إذا قمت بإعداد وفد Kerberos ل IIS

نصائح أخرى

يمكنك تحقيق الشيء نفسه باستخدام انتحال شخصية الهوية في ASP.NET. تحتاج أيضًا إلى تمكين Windows Integrated Authentication لتطبيق الويب الخاص بك. هذا سوف يحل الغرض. إذا لم يكن لدى المستخدم المسجل الحقوق المطلوبة للوصول إلى الموارد ، فستحصل على استثناءات من الأمان التي سيتعين عليك التعامل معها.

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