ما الفرق بين الـ Authentication والـ Authorization ولماذا يخلط بينهما الكثيرون؟

تم النشر | بواسطة: kareem | Apr 22, 2026 | منذ 23 ساعة و40 دقيقة |
برمجة
| عدد المشاهدات: 230
ما الفرق بين الـ Authentication والـ Authorization ولماذا يخلط بينهما الكثيرون؟

دليل واضح لمطوري PHP لفهم أساسيات الأمان بشكل صحيح

في عالم تطوير الويب، هناك مصطلحان يتكرران كثيرًا:
Authentication (المصادقة) و Authorization (التفويض).

رغم أن الفرق بينهما أساسي جدًا، إلا أن الكثير من المطورين—خصوصًا في البداية—يخلطون بينهما، مما يؤدي إلى أخطاء خطيرة في تصميم الأنظمة.

في هذا المقال، سنشرح الفرق بين Authentication وAuthorization بشكل عملي، ولماذا يحدث هذا الخلط، وكيف تتعامل معهما بشكل صحيح في تطبيقات PHP.


أولًا: ما هو Authentication (المصادقة)؟

التعريف ببساطة:

Authentication يعني:
👉 التحقق من هوية المستخدم


بمعنى آخر:

هل أنت فعلًا الشخص الذي تدّعي أنك هو؟


مثال:

  • المستخدم يدخل:
    • البريد الإلكتروني
    • كلمة المرور

النظام يتحقق:

✔ هل هذه البيانات صحيحة؟
✔ هل الحساب موجود؟

👉 إذا نعم → تم التحقق من الهوية (Authenticated)


أمثلة على Authentication:

  • تسجيل الدخول (Login)
  • تسجيل عبر Google أو Facebook
  • استخدام OTP (رمز مؤقت)
  • بصمة الإصبع أو التعرف على الوجه

ثانيًا: ما هو Authorization (التفويض)؟

التعريف ببساطة:

Authorization يعني:
👉 تحديد ماذا يمكن للمستخدم أن يفعل


بمعنى آخر:

بعد التأكد من هويتك… ماذا يُسمح لك أن تفعل؟


مثال:

  • مستخدم عادي:
    • يمكنه مشاهدة المنتجات
    • لا يمكنه حذفها
  • مدير (Admin):
    • يمكنه إضافة وحذف المنتجات

👉 هذا هو Authorization


الفرق الأساسي في جملة واحدة

  • Authentication = من أنت؟
  • Authorization = ماذا يمكنك أن تفعل؟

ترتيب العملية داخل النظام

من المهم جدًا فهم الترتيب:

  1. Authentication
  2. Authorization

لماذا؟

لأنك لا تستطيع تحديد الصلاحيات قبل معرفة هوية المستخدم.


مثال عملي كامل

نظام متجر إلكتروني

الخطوة 1: تسجيل الدخول

  • يتم التحقق من البريد وكلمة المرور
    👉 Authentication

الخطوة 2: الدخول إلى لوحة التحكم

  • هل المستخدم Admin؟
    👉 Authorization

مقارنة واضحة بين Authentication و Authorization

المعيار Authentication Authorization
الهدف التحقق من الهوية تحديد الصلاحيات
التوقيت قبل الوصول للنظام بعد تسجيل الدخول
السؤال الأساسي من أنت؟ ماذا يمكنك أن تفعل؟
الأدوات Password, OTP, OAuth Roles, Permissions
النتيجة User Authenticated Access Granted/Denied

لماذا يخلط المطورون بينهما؟

1. التشابه في المصطلحات

كلاهما مرتبط بالأمان، ويأتيان معًا في نفس السياق.


2. يحدثان في نفس العملية

في كثير من الأحيان:

  • المستخدم يسجل الدخول
  • ثم يتم تحديد صلاحياته

👉 فيظن المطور أنهما نفس الشيء


3. بعض الأنظمة تدمجهما

بعض الأدوات أو Frameworks تجعل العملية تبدو كأنها واحدة.


4. ضعف الفهم المفاهيمي

المطور يركز على الكود… وليس على المفهوم


خطأ شائع وخطير

الخلط بينهما قد يؤدي إلى:

  • إعطاء صلاحيات بدون تحقق
  • أو منع مستخدم صحيح من الوصول

مثال خطير:

  • التحقق فقط من أن المستخدم مسجل دخول
  • بدون التحقق من صلاحياته

👉 أي مستخدم يمكنه الوصول إلى Admin Panel ❌


كيف تطبق Authentication في PHP؟

يتم عبر:

  • تسجيل الدخول (Login System)
  • Sessions أو Tokens
  • تخزين بيانات المستخدم

كيف تطبق Authorization في PHP؟

يتم عبر:

  • Roles (أدوار مثل Admin / User)
  • Permissions (صلاحيات محددة)
  • Middleware أو Checks

أنواع Authorization


1. Role-Based Access Control (RBAC)

  • المستخدم له دور
  • كل دور له صلاحيات

2. Permission-Based

  • كل مستخدم له صلاحيات محددة

3. Attribute-Based (متقدم)

  • يعتمد على شروط متعددة
  • مثل الوقت أو الموقع

مثال عملي في التفكير

عند بناء API:

Authentication:

  • هل هذا المستخدم لديه Token صحيح؟

Authorization:

  • هل هذا المستخدم يملك حق الوصول لهذا الـ endpoint؟

أخطاء شائعة

  • التحقق من تسجيل الدخول فقط بدون صلاحيات
  • وضع منطق Authorization داخل Controller بشكل عشوائي
  • عدم فصل Authentication عن Authorization
  • الاعتماد على Frontend في التحقق

نصائح احترافية

1. افصل بين المفهومين دائمًا

لا تخلط بين التحقق من الهوية والصلاحيات


2. طبّق Authorization في كل Endpoint

لا تفترض أن المستخدم لديه حق الوصول


3. لا تثق بالـ Frontend

التحقق يجب أن يكون في السيرفر


4. استخدم Middleware

لتنظيم عملية التحقق


5. فكر في الأمان منذ البداية

ولا تضفه لاحقًا


مثال واقعي

نظام تعليمي

طالب:

  • يمكنه مشاهدة الدروس

مدرس:

  • يمكنه إضافة الدروس

مدير:

  • يمكنه إدارة النظام

التطبيق:

  • Authentication → تسجيل الدخول
  • Authorization → تحديد ماذا يرى كل مستخدم

العلاقة بينهما

يمكنك تخيل العلاقة كالتالي:

  • Authentication = بوابة الدخول
  • Authorization = تحديد ما يمكنك فعله داخل المكان

هل يمكن وجود أحدهما بدون الآخر؟

Authentication بدون Authorization:

  • كل المستخدمين لديهم نفس الصلاحيات ❌

Authorization بدون Authentication:

  • لا معنى له (من نحدد صلاحياته؟)

الأسئلة الشائعة (FAQ)

1. ما الفرق بين Authentication و Authorization؟

Authentication للتحقق من الهوية، وAuthorization لتحديد الصلاحيات.


2. هل يمكن استخدام أحدهما بدون الآخر؟

لا، يجب استخدامهما معًا لبناء نظام آمن.


3. أيهما يأتي أولًا؟

Authentication أولًا، ثم Authorization.


4. هل تسجيل الدخول يعتبر Authorization؟

لا، هو Authentication فقط.


5. ما أشهر طريقة لتطبيق Authorization؟

استخدام Roles وPermissions مثل RBAC.


الخاتمة

فهم الفرق بين Authentication و Authorization ليس مجرد معلومة نظرية، بل هو أساس بناء أنظمة آمنة واحترافية.

  • Authentication يحدد “من أنت”
  • Authorization يحدد “ماذا يمكنك أن تفعل”

والخلط بينهما قد يؤدي إلى مشاكل أمنية خطيرة.

كمطور PHP، عندما تفصل بين المفهومين وتطبقهما بشكل صحيح، ستبني أنظمة:

✔ أكثر أمانًا
✔ أكثر تنظيمًا
✔ وأسهل في التوسع

الأمان يبدأ من الفهم… وليس من الكود فقط.


🚀 ابدأ رحلتك مع كرياتيفو
وخد أول خطوة حقيقية نحو مستقبلك في البرمجة
📱 ابعتلنا علي واتساب
💬 ابعتلنا علي فيسبوك

الكلمات المفتاحية

Authentication vs Authorization الفرق بين المصادقة والتفويض PHP security user authentication user authorization web security basics backend PHP login systems RBAC permissions PHP secure web apps access control OAuth JWT authentication session authentication PHP developers حماية المواقع cyber security secure coding API security

مقالات مشابهة

برمجه

ما هو الـ Foreign Key وكيف يربط الجداول ببعضها؟ 

تعرف على ما هو الـ Foreign Key وكيف يربط الجداول ببعضها بطريقة احترافية. شرح مبسط مع أمثلة واقعية لمطوري الويب لفهم علاقات قواعد البيانات.

20 Apr, 2026
تفاصيل المقال
برمجة

هل ينفع تبدأ Back-End من غير Front-End

هل ينفع تبدأ تعلم الباك اند بدون الفرونت اند؟ اكتشف الطريق الصحيح لتعلم البرمجة من الصفر ولماذا تعتبر أساسيات Front-End خطوة أساسية قبل احتراف Back-End.

29 Mar, 2026
تفاصيل المقال
برمجه

الفرق بين INNER JOIN و LEFT JOIN و RIGHT JOIN

تعرف على الفرق بين INNER JOIN و LEFT JOIN و RIGHT JOIN بطريقة بسيطة وعملية مع أمثلة واقعية. دليل شامل لمطوري الويب لفهم ربط الجداول في SQL واختيار النوع المناسب.

20 Apr, 2026
تفاصيل المقال
تصميم

ما هو Flex Container و Flex Items في CSS؟ وكيف تتحكم فيهما باحتراف

تعرف على الفرق بين Flex Container و Flex Items في CSS وكيف تتحكم في كل منهما لبناء Layout مرن واحترافي. دليل عملي لمطوري الويب لفهم أساسيات Flexbox بشكل بسيط وواضح.

21 Apr, 2026
تفاصيل المقال
برمجة

ما الفرق بين GET و POST ومتى تستخدم كل منهما؟

تعرف على الفرق بين GET و POST في HTTP ومتى تستخدم كل منهما، مع شرح مبسط وأمثلة عملية تساعدك على بناء تطبيقات ويب احترافية وآمنة.

16 Apr, 2026
تفاصيل المقال
برمجة

ما هو Python ولماذا أصبحت لغة البرمجة الأولى للتعلم في العالم ؟

تعرف على لغة بايثون ولماذا أصبحت الخيار الأول لتعلم البرمجة حول العالم، مع أهم مميزاتها واستخداماتها للمبتدئين والمحترفين.

17 Apr, 2026
تفاصيل المقال