التفويض والمصادقة في C# (.NET) — دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التفويض والمصادقة في C# (.NET)

في تطوير الويب الحديث على منصة .NET، تعتبر موضوعات المصادقة (التحقق من هوية المستخدم) والتفويض (التحقق من صلاحيات الوصول) أساسية. توفر المكتبات والآليات المدمجة في ASP.NET Core مجموعة أدوات قوية ومرنة لتنفيذ هذه المهام. في هذه المقالة، سنقوم بتحليل المناهج الرئيسية بالتفصيل، بما في ذلك استخدام JWT (JSON Web Tokens)، وASP.NET Core Identity، ومكونات middleware المدمجة.



المفاهيم الأساسية

  • المصادقة (Authentication) — عملية التحقق من هوية المستخدم (مثل اسم المستخدم + كلمة المرور).
  • التفويض (Authorization) — عملية تحديد ما يمكن للمستخدم فعله (الأدوار، السياسات، المطالبات).
  • الهوية القائمة على المطالبات (Claims-based identity) — نهج يتم فيه تخزين معلومات المستخدم كمجموعة من المطالبات (claims).


ASP.NET Core Identity

ASP.NET Core Identity هو نظام كامل لإدارة المستخدمين يتضمن التسجيل، تسجيل الدخول، إعادة تعيين كلمة المرور، المصادقة الثنائية، وإدارة الأدوار. يستخدم Entity Framework Core لتخزين البيانات في قاعدة البيانات.

لتوصيل Identity في المشروع، يكفي إضافة استدعاء AddDefaultIdentity وتكوين سلسلة الاتصال. مثال على الإعداد الأساسي في Program.cs:

using Microsoft.AspNetCore.Identity;using Microsoft.EntityFrameworkCore;using YourApp.Data;

var builder = WebApplication.CreateBuilder(args);

// إضافة سياق قاعدة البياناتbuilder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// إضافة Identitybuilder.Services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = false; options.Password.RequireDigit = true; options.Password.RequiredLength = 6;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseAuthentication();app.UseAuthorization();

app.MapRazorPages();app.Run();

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

[Authorize(Roles = "Admin")]public IActionResult AdminPanel(){    return View();}


مصادقة JWT (JSON Web Tokens)

JWT هي طريقة مدمجة ومكتفية ذاتياً لنقل المعلومات بين الأطراف على شكل كائن JSON. في .NET، تُستخدم JWT غالباً لإنشاء REST API وتطبيقات SPA. المكتبة الرئيسية هي Microsoft.AspNetCore.Authentication.JwtBearer.

إعداد JWT في Program.cs:

using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;

var builder = WebApplication.CreateBuilder(args);

var key = Encoding.ASCII.GetBytes("YourSuperSecretKeyThatIsAtLeast32CharactersLong!");

builder.Services.AddAuthentication(options =>{ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;}).AddJwtBearer(options =>{ options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "yourdomain.com", ValidAudience = "yourdomain.com", IssuerSigningKey = new SymmetricSecurityKey(key) };});

builder.Services.AddAuthorization();builder.Services.AddControllers();

var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapControllers();app.Run();

مثال

توصيات