OAuth 2.0: المفاهيم والأدوار
كيف يصل تطبيقك إلى بياناتك في خدمة أخرى دون أن تعطيه كلمة مرورك؟ ⏱ نحو 40 دقيقة.
- تشرح مشكلة التفويض المندوب التي يحلّها
OAuth. - تحدّد أدوار
OAuthالأربعة. - تميّز التدفقات وتعرف المعتمد اليوم.
- تفرّق بين
OAuth(تفويض) وOIDC(هوية).
١المشكلة: التفويض المندوب
تريد لتطبيقك أن يصل إلى بيانات المستخدم في خدمة أخرى — صوره في Google مثلًا. الحل الساذج: يعطيك كلمة مروره في Google. هذا كارثة: ترى كل شيء، بلا حدود، وبلا طريقة لإلغاء الإذن إلا بتغيير الكلمة.
OAuth 2.0 يحلّ هذا بـالتفويض المندوب: يأذن المستخدم لتطبيقك بصلاحية محددة دون أن يعطيه كلمة مروره قط. تطبيقك يحصل على رمز وصول محدود النطاق والمدّة، يمكن إلغاؤه وحده.
٢الأدوار الأربعة
| الدور | من هو | في مثال «الدخول بـ Google» |
|---|---|---|
| مالك المورد | المستخدم صاحب البيانات | أنت |
| العميل Client | التطبيق الذي يطلب الوصول | متجر «رفيق» |
| خادم التفويض | من يصادق المالك ويصدر الرموز | |
| خادم الموارد | من يحمل البيانات ويقبل الرمز | واجهة Google |
يفصل OAuth بين من يصادق (خادم التفويض) ومن يملك البيانات (خادم الموارد)، فلا يرى تطبيقك كلمة المرور أبدًا.
٣أنواع التدفقات
لـ OAuth تدفقات (منح) عدة بحسب نوع العميل. المعتمد اليوم للتطبيقات هو Authorization Code مع PKCE (الدرس القادم):
| التدفق | لمن | الحالة |
|---|---|---|
Authorization Code + PKCE | تطبيقات الويب والجوال | ✓ المعتمد اليوم |
| Client Credentials | خادم لخادم (بلا مستخدم) | ✓ لحالته |
| Implicit | تطبيقات الواجهة قديمًا | ✗ مهجور (غير آمن) |
| Password Grant | ثقة كاملة | ✗ مهجور |
توقّع وتحقّق
OAuth يحلّ مشكلة:
من يصدر رمز الوصول؟
التدفق المعتمد اليوم:
OAuth أساسًا:
الخلاصة
OAuthيأذن لتطبيقك بصلاحية محددة دون مشاركة كلمة المرور.- الأدوار: مالك المورد، والعميل، وخادم التفويض، وخادم الموارد.
- التدفق المعتمد اليوم
Authorization CodeمعPKCE؛ وImplicitمهجور. OAuthتفويض لا مصادقة؛ الهوية وظيفةOpenID Connectفوقه.
تحدٍّ تصميمي: حدّد أدوار OAuth
متوسطيريد متجر «رفيق» أن يستورد صور ملف المستخدم من خدمة «صور سحابية» عبر OAuth. حدّد الأدوار الأربعة في هذا السيناريو، واشرح لماذا OAuth أأمن من مشاركة كلمة المرور.
- لكل دور من الأربعة: مَن يؤديه هنا (سطر لكل دور).
- سببان على الأقل لتفوّق OAuth على مشاركة كلمة المرور.
- الأدوار الأربعة
- مالك المورد = المستخدم
- خادم التفويض = خدمة الصور
- العميل = المتجر
- سببان لتفوّق OAuth
- لا يرى كلمة المرور
💡 تلميح 1
💡 تلميح 2
💡 تلميح 3
نموذج واحد من إجابات كثيرة صحيحة.
- الأدوار الأربعة (سطر لكل دور)
- مالك المورد: المستخدم صاحب الصور.
العميل: متجر رفيق الذي يطلب الصور.
خادم التفويض: خدمة الصور السحابية التي تصادق المستخدم وتصدر الرمز.
خادم الموارد: واجهة خدمة الصور التي تسلّم الصور مقابل الرمز. - لماذا OAuth أأمن (سببان)
- لا يرى متجر رفيق كلمة مرور المستخدم إطلاقًا.
الإذن محدود النطاق (الصور فقط) والمدّة، ويمكن إلغاؤه وحده دون تغيير كلمة المرور.