Introduction Into Authentication & Authorization in .NET

لما بنبني تطبيق فيه بيانات حساسة أو مهم إننا نحميها، لازم نتأكد من هوية المستخدم (Authentication) وبعدين نحدد إيه الصلاحيات المسموح ليه يعملها (Authorization).
Introduction Into Authentication & Authorization in .NET
Introduction Into Authentication & Authorization in .NET

في هذه الصفحة

المقدمة

لما بنبني تطبيق فيه بيانات حساسة أو مهم إننا نحميها، لازم نتأكد من هوية المستخدم (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 وأيضًا التحقق من صلاحية التوكن نفسه.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀

آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة

مستنينكوا تنورونا , وده رابط القناة 👇

https://t.me/eqraatechcom


تطبيق الـ 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

  1. حماية البيانات الحساسة: Authentication و Authorization بيضمنوا إن البيانات الحساسة مش هتوصل لحد مش مفروض يوصل ليها. يعني كل مستخدم هيكون ليه صلاحياته الخاصة، ولو مفيش صلاحية مش هينفع يوصل لحاجة مش من حقه.
  2. إدارة الأذونات بسهولة: مع Authorization، تقدر تدير صلاحيات كل مستخدم وتحدد إيه الحاجات اللي يقدر يوصل لها بناءً على الدور بتاعه (زي admin أو user عادي). يعني تقدر تعطي كل واحد صلاحيات معينة دون تعقيد.
  3. انتهاء صلاحية التوكن (Token Expiration): في JWT، بيتم تحديد وقت انتهاء صلاحية التوكن. ده معناه إن التوكن هيبقى صالح لمدة معينة، وبعد كده لازم المستخدم يسجل دخول تاني عشان يحصل على توكن جديد. ده بيحسن الأمان وبيقلل من احتمالية استخدام توكن قديم.
  4. الـ Claims: هي البيانات اللي بتكون مخزنة جوه التوكن زي User ID أو Role. دي بتساعد في تحديد صلاحيات المستخدم بسهولة. مثلا لو التوكن يحتوي على Role، ممكن تستخدمه علشان تحدد إذا كان المستخدم يقدر يوصل لمسار معين أو لأ.

في الختام

  • الـ Authentication: هو التحقق من هوية المستخدم.
  • الـ Authorization: هو تحديد ما يمكن للمستخدم فعله بعد ما نعرف هويته.

باستخدام JWT في ASP.NET Core، تقدر تبني تطبيق ويب آمن جدًا يحمي بيانات المستخدمين ويحدد صلاحياتهم واستخدام الـ Authentication و Authorization بشكل صحيح في تطبيقك مهم جدًا لحماية البيانات ورفع مستوى الأمان. لو فهمت وطبقت المبادئ دي صح، هتضمن إن تطبيقك يكون آمن وسهل الإدارة.

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!