كيف يعمل OAuth — مسار رمز التفويض
كيف يعمل OAuth، موضّحاً على لوحة تفاعلية: مسار رمز التفويض بين المستخدم وتطبيق العميل وخادم التفويض وخادم الموارد.
يتيح OAuth لتطبيق أن يصل إلى بيانات خدمة أخرى نيابةً عن المستخدم دون أن يرى كلمة مروره إطلاقاً — عبر مبادلة الموافقة برمز قصير العمر.
كيف يعمل OAuth — مسار رمز التفويض
لوحة FlowJam التفاعلية لهذا الشرح — كل مسار وصف وسهم أعلاه جزء من مخطط QueryChart حقيقي يمكنك فتحه وتعديله.
كيف تقرأ هذا الشرح المرئي
- اقرأ الأعمدة الثلاثة من اليسار إلى اليمين: التفويض، ثم تبادل الرمز، ثم المورد المحمي.
- كل صف هو دور طرف واحد في القصة — صف المستخدم في الأعلى وصف خادم الموارد في الأسفل، فتُحيط موافقة المستخدم وتحقّق الخادم بما بينهما.
- الأسهم التي تقفز بين الصفوف، مثل رمز التفويض العائد إلى تطبيق العميل، هي رسائل شبكية حقيقية بين الأطراف؛ أما الأسهم داخل الصف الواحد فهي خطوات ذلك الطرف نفسه.
رقصة التفويض
تبدأ القصة في صف المستخدم بخطوة «ينقر المستخدم على «تسجيل الدخول عبر المزوّد»»، ثم تُسلَّم إلى «يعيد تطبيق العميل توجيه المستخدم إلى خادم التفويض». إعادة التوجيه هي الحركة المميّزة لـOAuth: فهي تُخرج المستخدم من تطبيق العميل إلى المزوّد، حيث تقع خطوة «يسجّل المستخدم الدخول ويوافق على الصلاحيات المطلوبة». وشاشة الموافقة — لا مجرد تسجيل الدخول — هي الخطوة المهمة: فالمستخدم يختار بدقة ما يجوز لتطبيق العميل فعله. وخطوة «يعيد خادم التفويض رمز تفويض إلى تطبيق العميل» تعيد التحكم إلى التطبيق، لكن برمز تفويض فقط لا برمز وصول.
تبادل الرمز
تعبر خطوة «يبادل تطبيق العميل رمز التفويض وسرّه برمز وصول» من صف تطبيق العميل إلى صف خادم التفويض. وفي هذه الخطوة يثبت تطبيق العميل أنه تطبيق شرعي بتقديم رمز التفويض الذي استلمه وسر تطبيق العميل المسجّل معاً — فالرمز المسروق وحده لا يكفي. وخطوة «يُصدر خادم التفويض رمز الوصول» هي اللحظة التي يتحوّل فيها قرار الموافقة إلى قدرة فعلية: سلسلة نصية تقول ما يجوز لتطبيق العميل فعله، ولأي مدة.
إنفاق الرمز
تعبر خطوة «يستدعي تطبيق العميل خادم الموارد باستخدام رمز الوصول» إلى مجموعة «خادم الموارد»، وخطوة «يتحقّق خادم الموارد من الرمز ويعيد بيانات المستخدم» هي المكسب. فخادم الموارد لا يرى كلمة مرور المستخدم ولا شاشة الموافقة — إنما يفحص الرمز فقط. وخطوة «يرى المستخدم بياناته داخل التطبيق» تُغلق الحلقة عائدةً إلى صف المستخدم: فمن وجهة نظر المستخدم، سجّل الدخول مرة واحدة وحصل التطبيق على بياناته.
العلاقات الرئيسية والخلاصات
- كلمة مرور المستخدم تُعطى إلى خادم التفويض وحده — ولا يراها تطبيق العميل ولا خادم الموارد أبداً.
- الموافقة (أي الصلاحيات) هي المنح الفعلي؛ ورمز الوصول هو ذلك المنح في صورة يقرؤها الحاسوب.
- رمز التفويض قصير العمر ولا فائدة منه بلا سر تطبيق العميل — عاملان يحميان المبادلة.
- رموز الوصول تنتهي صلاحيتها؛ ورموز التحديث تُصدر رموزاً جديدة بهدوء دون شاشة موافقة أخرى.
- مهمة خادم الموارد الوحيدة هي التحقّق من الرمز، وهذا ما يبقي الأطراف مفكوكة الاقتران.
متى تستخدم هذا الشرح المرئي
- شرح سبب أمان «تسجيل الدخول عبر Google» لفريق المنتج، وبيان ما تطلبه شاشة الموافقة.
- اختيار مسار OAuth المناسب: مسار رمز التفويض المرسوم هنا مقابل المسار الضمني أو مسار بيانات اعتماد تطبيق العميل في سيناريوهات أخرى.
- تدقيق المسار الذي تسلكه فعلاً بيانات اعتماد المستخدم والرموز داخل تكاملك.
كيف تعمل
أعد تسمية الأطراف لتطابق نظامك
استبدل مجموعات المسارات الأربع بالمشاركين الحقيقيين لديك — تطبيق الويب، ومزوّد الهوية، وAPI الخاص بك — حتى تعكس الحدود الفاصلة النظام الذي توثّقه.
أضف الصلاحيات التي تطلبها
علّق على خطوة الموافقة بالصلاحيات الفعلية وبملاحظة عن سبب الحاجة إلى كل منها، ليرى المراجعون قرار أقل الامتيازات.
ارسم مسار التحديث
أضف تفرّعاً بعد انتهاء صلاحية الرمز: يقدّم تطبيق العميل رمز التحديث ويستلم رمز وصول جديداً دون شاشة موافقة، وينتهي التفرّع بحالة صريحة خاصة به.
مثّل حالات الإخفاق
أضف فروع الرفض — شاشة موافقة مرفوضة، ورمز تفويض غير صالح، ورمز منتهي الصلاحية أو ملغى — مع استجابة الخطأ التي ينتجها كل منها.
الأسئلة الشائعة
ما هو OAuth ولماذا وُجد؟
OAuth معيار للتفويض بالإنابة. فهو يتيح لتطبيق أن يصل إلى بيانات مستخدم على خدمة أخرى نيابةً عنه دون أن يرى التطبيق كلمة مرور المستخدم إطلاقاً. يصادق المستخدم مرة واحدة عند خادم التفويض ويوافق على أذونات محددة (الصلاحيات)؛ ويستلم التطبيق رمزاً يمكنه إنفاقه. وهذا الفصل بين المسؤوليات هو بالضبط ما تمثّله مجموعات المسارات الأربع في الشرح المرئي.
ما الفرق بين رمز التفويض ورمز الوصول؟
رمز التفويض قيمة وسيطة قصيرة العمر يستلمها تطبيق العميل بعد موافقة المستخدم؛ وهو وحده لا يمنح شيئاً. ويبادل تطبيق العميل هذا الرمز — مع سر تطبيق العميل المسجّل — برمز وصول، وهو القدرة الفعلية المستخدمة في استدعاء خادم الموارد. والمبادلة على خطوتين هي ما يتيح لتطبيق العميل إثبات هويته عند نقطة نهاية الرمز.
لماذا لا يعطي المستخدم كلمة مروره للتطبيق؟
لأن التطبيق لا يحتاج إلا وصولاً محدوداً وقابلاً للإلغاء — قراءة ملف شخصي لا امتلاك حساب. فلو استلم التطبيق كلمة المرور لحصل على وصول كامل إلى الأبد، ولما استطاع المستخدم إلغاء تطبيق واحد دون تغيير كلمة مروره في كل مكان. وOAuth يبادل كلمة المرور برمز محدود الصلاحيات ينتهي أجله ويستطيع المستخدم إلغاءه وحده.
ما الصلاحيات؟
الصلاحيات هي الأذونات المحددة التي يمنحها المستخدم، مثل «قراءة البريد» أو «الكتابة في التقويم». وهي تظهر على شاشة الموافقة وتُرمَّز داخل رمز الوصول. ويفرضها خادم الموارد، فالرمز الممنوح صلاحية القراءة لا يستطيع الكتابة — أقل الامتيازات مبني في البروتوكول نفسه بدل الاعتماد على حسن سلوك تطبيق العميل.
عدّل هذا الشرح المرئي في QueryChart (FlowJam)
افتح لوحة مسار OAuth هذه نفسها كمخطط خاص بك، وأعد تسمية الأطراف لتطابق خدماتك، وعلّق على الصلاحيات التي تطلبها.