عنوان:

‫پیاده‌سازی مجوز مبتنی بر نقش Keycloak با Blazor WebAssembly و Web API


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۰۴ ۰۸:۳۴
آدرس: www.dntips.ir
این مقاله نحوه پیاده‌سازی مجوز مبتنی بر نقش (RBA) با استفاده از Keycloak، Blazor WebAssembly و یک Web API دات‌نت را شرح می‌دهد.

تنظیمات Keycloak

  • ایجاد نقش‌ها: نقش‌ها ("Administrator" و "Visitor") در "BlazorWebApiRealm" در Keycloak ایجاد می‌شوند.
  • انتساب نقش‌ها: نقش‌ها به کاربران موجود اختصاص داده می‌شوند (به عنوان مثال، نقش "Administrator" به کاربر "codemaze").
  • انتساب خودکار نقش: ثبت‌نام کاربر فعال می‌شود و به کاربران تازه ثبت‌نام‌شده به‌طور خودکار یک نقش پیش‌فرض (به عنوان مثال، "Visitor") اختصاص داده می‌شود.
  • نگاشت نقش: محدوده "roles" پیکربندی می‌شود تا نقش‌های realm را به claim "role" در توکن‌های ID، دسترسی و اطلاعات کاربر نگاشت کند. "Token Claim Name" به "role" تنظیم می‌شود.

پیکربندی Blazor WASM

  • پیکربندی OIDC: متد AddOidcAuthentication در کلاس Program برای پیکربندی ارائه‌دهنده OIDC با مرجع، شناسه مشتری و محدوده‌های صحیح استفاده می‌شود. UserOptions.RoleClaim به "role" تنظیم می‌شود تا با نگاشت Keycloak مطابقت داشته باشد.
  • محافظت از صفحات: ویژگی @Authorize با پارامتر Roles برای محدود کردن دسترسی به صفحات خاص Blazor بر اساس نقش‌ها استفاده می‌شود (به عنوان مثال، @attribute [Authorize(Roles = "Administrator")] در صفحه "/weather").
  • UI مشروط: کامپوننت <AuthorizeView> برای نمایش مشروط عناصر UI بر اساس نقش‌ها استفاده می‌شود (به عنوان مثال، پنهان کردن منوی "Weather" برای کاربران "Visitor").

مدیریت نقش‌های متعدد

  • کارخانه اصلی ادعاهای نقش چندگانه: یک MultipleRoleClaimsPrincipalFactory سفارشی برای مدیریت claim "role" ایجاد می‌شود که Keycloak آن را به عنوان آرایه‌ای از رشته‌ها ارسال می‌کند. این کارخانه آرایه را به چندین claim جداگانه تبدیل می‌کند، همانطور که توسط سیستم مجوز دات‌نت انتظار می‌رود.
  • ثبت کارخانه: متد AddAccountClaimsPrincipalFactory برای ثبت کارخانه سفارشی در کلاس Program استفاده می‌شود.

محافظت از API

  • مجوزدهی نقاط پایانی API: ویژگی [Authorize(Roles = "Administrator")] برای محافظت از نقاط پایانی API استفاده می‌شود و دسترسی را به کاربرانی با نقش‌های خاص محدود می‌کند.

نتیجه‌گیری

این مقاله با تأکید بر اهمیت نگاشت صحیح نقش‌ها و مدیریت نقش‌های متعدد در یک claim برای دستیابی به کنترل دسترسی مبتنی بر نقش قوی در یک برنامه Blazor WASM با استفاده از Keycloak و یک Web API دات‌نت به پایان می‌رسد.


مشاهده مطلب اصلی