مراجعة هوية المستخدم في .NET - ما هي استراتيجية جيدة؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

أنا متأكد من أنه من المتطلبات التي يواجهها العديد من المطورين من قبل: يحتاج الأعمال إلى درب التدقيق لمعرفة من يقوم بإجراءات في نظامهم.

بغض النظر عن كيفية اختيار تخزين المعلومات المدققة، فإن جوهر هذه المشكلة هو كيفية تحديد المستخدم الحالي.

أريد أن أكتب مكونات، تتراوح من فئات نموذج المجال الصغيرة إلى مكونات الخدمة، كل ما يمكن أن يسمى بأمان من أي من التطبيقات المضيفة التالية:

  • تطبيق Windows Desktop.
  • موقع ASP.NET المستضاف في IIS.
  • خدمة WCF المستضافة في IIS.
  • خدمة WCF المستضافة في خدمة Windows.

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

هل يمكن لأي منكم أن يقترح أي منكم ذكي نهجا لمعالجة هذا؟

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

المحلول

سأطلب عموما أن مجموعة التطبيقات Thread.CurrentPrincipal إلى مدير هو هويتها التي تمثل المستخدم الحالي. يمكن القيام بذلك في بدء تشغيل التطبيق (باستخدام WindowsIndity.getCurrent ()) في تطبيق عميل (WinForms أو Console)، من httpcontext.current.user أو roles.getcurrentUser () في تطبيق ASP.NET أو WCF المستضاف في IIS، إلخ وبعد

ثم في مكونات المستوى الأدنى الذي تستخدمه ببساطة Thread.CurrentPrincipal.Identity للتدقيق.

تعديل(ردا على التعليق) - لاحظ ذلك Thread.CurrentPrincipal.Identity لا علاقة له بسياق أمان الخيط: هذا يمثله الوثاضة ويمكن استرجاعه باستخدام WindowsIdentity.GetCurrent وتغييرها باستخدام WindowsIdentity.Impersonate.

نصائح أخرى

أفضل طريقة، باستخدام التقنيات الأكثر حداثة، ربما للاستخدام مؤسسة هوية ويندوز.

تم تصميم WIF لمعالجة مشكلات هوية المستخدم عبر تقنيات متعددة باستخدام .NET.

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