عضوية ASP.NET - ما هو موفر الأدوار الذي يجب استخدامه حتى يقوم User.IsInRole() بالتحقق من مجموعات ActiveDirectory؟

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

سؤال

سؤال بسيط جداً في الحقيقة:

لقد قمت حاليًا بتعطيل الوصول المجهول إلى IIS، ويتم تسجيل دخول المستخدمين تلقائيًا باستخدام تسجيل دخول Windows الخاص بهم.ومع ذلك فإن استدعاء User.IsInRole("اسم الدور") يُرجع خطأ.لقد قمت بالتحقق مرة أخرى من User.Identity.Name() و"اسم الدور" ويجب أن يعود صحيحًا.

لدي هذا حاليًا في Web.Config الخاص بي:

تحديث
كنت أتصل بـ User.IsInRole("اسم الدور") حيث يجب أن أتصل بـ User.IsInRole("DOMAIN ole name")

ومع ذلك ما زلت أرغب في معرفة ما إذا كان إدخال <العضوية> مطلوبًا على الإطلاق؟

ماذا يجب أن أغير؟(وهل إدخال <العضوية> مطلوب على الإطلاق؟)

  <authentication mode="Windows">
      <forms
      name=".ADAuthCookie"
      timeout="10" />
  </authentication>


<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear/>
      <add
         name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionUsername="XXX\specialAdUser"
         connectionPassword="xx"
         />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="WindowsProvider">
  <providers>
    <clear />
      <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
هل كانت مفيدة؟

المحلول

إذا كنت تستخدم مصادقة Windows، فستعمل IsInRole بدون أي تكوين إضافي، طالما أنك تتذكر بادئة الدور بالمجال، أي.المجال\اسم المجموعة.

بالإضافة إلى ذلك، يمكنك تحديد دورك (المقصود من التورية) واستخدام مصادقة Windows مقابل، على سبيل المثال، موفر دور SQL، حيث لا تريد أن يكون إعلانك مليئًا بالأدوار المخصصة لتطبيقك.

لذلك لا، لا تحتاج إلى تكوين الموفر على الإطلاق.

نصائح أخرى

مزود العضوية هنا لن يساعد.يبدو أن ActiveDirectoryMembershipProvider هو الأفضل (فقط؟) الذي يتناسب مع مصادقة النماذج.

يحتوي BlogEngine.NET على موفر دور Active Directory.

من المؤكد أن الشيء الوحيد الذي تحتاجه هو مجموعة roleManager (جنبًا إلى جنب مع وضع المصادقة الأساسي = إعداد "windows")

لا يوجد موفر دور لاستخدام Active Directory مباشرة.يمكنك استخدام جدول الأدوار في نظام العضوية والأدوار في ASP.NET، أو يمكنك استخدام مدير التفويض (AzMan).

هناك مقال عن CodeProject والذي يوضح تنفيذ موفر الدور الذي يعمل ضد Active Directory - مع كود المصدر الكامل.ربما هذا يساعد؟

مارك

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