في هذه الصفحة
المقدمة
لما بنبني تطبيق فيه بيانات حساسة أو مهم إننا نحميها، لازم نتأكد من هوية المستخدم (Authentication) وبعدين نحدد إيه الصلاحيات المسموح ليه يعملها (Authorization). لو هنتكلم عن ASP.NET Core، الإطار ده بيقدم أدوات مرنة وبسيطة علشان تدير الأمور دي.
إيه الفرق بين Authentication و Authorization
الـ Authentication: ده ببساطة التحقق من هوية المستخدم. يعني لما المستخدم يدخل على التطبيق، بنعمل تحقق من بياناته زي البريد الإلكتروني وكلمة السر عشان نتأكد إنه الشخص ده هو اللي بيقول إنه هو.
الـ Authorization: ده بيكون بعد ما نتأكد من هوية المستخدم. الهدف من Authorization هو تحديد إيه الحاجات اللي يقدر المستخدم يوصل ليها أو يعملها في التطبيق بناءً على صلاحياته.
تطبيق الـ Authentication in .NET CORE
في ASP.NET Core، فيه كذا طريقة ممكن تستخدمها علشان تعمل Authentication للمستخدمين، أشهرهم JWT Tokens. ده بيكون مفيد خصوصًا لو بتبني REST API لأن JWT بيقدم طريقة آمنة وسهلة للتواصل بين العميل والخادم.
استخدام JWT في Authentication:
هنا هتتعلم إزاي تجهز JWT في تطبيقك علشان تعمل التوثيق:
أول حاجة، هتقوم بإعداد خدمة Authentication
في ملف Startup.cs
عشان تستخدم JWT Bearer Authentication.
public void ConfigureServices(IServiceCollection services) {
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => {
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuer = true, // التحقق من المُصدر
ValidateAudience = true, // التحقق من الجمهور
ValidateLifetime = true, // التحقق من صلاحية التوكن
ValidIssuer = "yourissuer", // المُصدر الصحيح
ValidAudience = "youraudience", // الجمهور الصحيح
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")) // مفتاح التوقيع
};
});
}
في الكود ده: بنحدد الطريقة اللي هيتم بها التحقق من التوكن باستخدام JWT Bearer وبنضيف إعدادات التحقق زي التحقق من Issuer و Audience وأيضًا التحقق من صلاحية التوكن نفسه.
تطبيق الـ Authorization in .NET CORE
ثانيًا، بعد ما تجهز Authentication، ممكن تستخدم [Authorize] لحماية الـ Controllers بتاعتك:
[Authorize]
public class SecureController : ControllerBase {
public IActionResult Get() {
return Ok("This is a protected route!"); // ده هيتنفذ لو المستخدم معاه توكن صالح
}
}
هنا، باستخدام الـ [Authorize]، إحنا بنقول إن المسار ده محمي ولازم المستخدم يكون عنده توكن صالح عشان يقدر يوصل له.
فوائد الـ Authentication و Authorization
- حماية البيانات الحساسة: Authentication و Authorization بيضمنوا إن البيانات الحساسة مش هتوصل لحد مش مفروض يوصل ليها. يعني كل مستخدم هيكون ليه صلاحياته الخاصة، ولو مفيش صلاحية مش هينفع يوصل لحاجة مش من حقه.
- إدارة الأذونات بسهولة: مع Authorization، تقدر تدير صلاحيات كل مستخدم وتحدد إيه الحاجات اللي يقدر يوصل لها بناءً على الدور بتاعه (زي admin أو user عادي). يعني تقدر تعطي كل واحد صلاحيات معينة دون تعقيد.
- انتهاء صلاحية التوكن (Token Expiration): في JWT، بيتم تحديد وقت انتهاء صلاحية التوكن. ده معناه إن التوكن هيبقى صالح لمدة معينة، وبعد كده لازم المستخدم يسجل دخول تاني عشان يحصل على توكن جديد. ده بيحسن الأمان وبيقلل من احتمالية استخدام توكن قديم.
- الـ Claims: هي البيانات اللي بتكون مخزنة جوه التوكن زي User ID أو Role. دي بتساعد في تحديد صلاحيات المستخدم بسهولة. مثلا لو التوكن يحتوي على Role، ممكن تستخدمه علشان تحدد إذا كان المستخدم يقدر يوصل لمسار معين أو لأ.
في الختام
- الـ Authentication: هو التحقق من هوية المستخدم.
- الـ Authorization: هو تحديد ما يمكن للمستخدم فعله بعد ما نعرف هويته.
باستخدام JWT في ASP.NET Core، تقدر تبني تطبيق ويب آمن جدًا يحمي بيانات المستخدمين ويحدد صلاحياتهم واستخدام الـ Authentication و Authorization بشكل صحيح في تطبيقك مهم جدًا لحماية البيانات ورفع مستوى الأمان. لو فهمت وطبقت المبادئ دي صح، هتضمن إن تطبيقك يكون آمن وسهل الإدارة.