رمز تفويض OAuth 2.0 هو طريقة مصادقة شائعة تستخدمها العديد من الخدمات، بما في ذلك GitHub، للسماح للتطبيقات الخارجية بالوصول إلى بيانات المستخدم دون مشاركة كلمات المرور. إن تنفيذها وتصحيح أخطائها في Apidog يمكن أن يكون مهارة قيمة.
OAuth 2.0
OAuth 2.0 هو بروتوكول تفويض يُستخدم على نطاق واسع يتيح الوصول لطرف ثالث إلى الموارد المحمية دون الحاجة إلى بيانات اعتماد المستخدم. يتضمن أربعة أدوار رئيسية، وهي مالك المورد، والعميل، وخادم التفويض، وخادم المورد.

تدفقات التفويض الشائعة
تنفذ بروتوكولات OAuth 2.0 التفويض من خلال تدفقات تفويض متنوعة. تشمل تدفقات التفويض الشائعة ما يلي:
- تفويض رمز التفويض: يقوم العميل بإعادة توجيه المستخدم إلى خادم التفويض. بعد تسجيل دخول المستخدم ومنح الإذن، يقوم خادم التفويض بإرجاع رمز التفويض إلى العميل. ثم يقوم العميل بتبادل رمز التفويض إلى جانب بيانات اعتماده للحصول على رمز وصول.
- تفويض رمز التفويض مع PKCE (مفتاح إثبات لتبادل الرمز): مشابه لتدفق رمز التفويض القياسي، ولكن العميل يعزز الأمان باستخدام PKCE (مفتاح إثبات لتبادل الرمز).
- تفويض بيانات اعتماد كلمة المرور لمالك المورد: يزود مالك المورد العميل مباشرة باسم المستخدم وكلمة المرور الخاصة به. ثم يستخدم العميل هذه البيانات للحصول على رمز وصول من خادم التفويض.
- تفويض بيانات اعتماد العميل: يطلب العميل مباشرةً رمز وصول من خادم التفويض باستخدام بيانات الاعتماد الخاصة به. هذه التدفق مناسب للحالات التي يحتاج فيها العميل نفسه وصولًا إلى الموارد.
- التفويض الضمني: يستخدم للحصول على رمز وصول مباشرة من العميل في تطبيق مستند إلى المتصفح. يستخدم هذا التدفق عادةً لتطبيقات الويب الأمامية.
كيفية إعداد GitHub OAuth 2.0 (معرف العميل والسر العميل)
الخطوة 1: إنشاء التطبيق والحصول على معرف العميل والسر العميل
للحصول على معرف العميل والمفتاح العميل، نحتاج أولًا إلى إنشاء تطبيق. انقر على هذا الرابط لإنشاء واحد في GitHub: https://github.com/settings/applications/new، ثم قم بملء "رابط الصفحة الرئيسية" هنا اسم المجال، إذا كان لديك تصحيح محلي، يمكنك ملء الخدمة المحلية الخاصة بك، مثل http://127.0.0.1:8000.
املأ عنوان الاسترجاع الخاص بك في "عنوان URL للاسترجاع من التفويض"، والذي يمكن أن يكون اسم مجالك أو عنوان الاسترجاع المحلي الخاص بك، مثل http://127.0.0.1:8000/callback.
بعد ملء التكوين ذي الصلة، انقر على "تسجيل التطبيق" لإنشائه.

بعد إنشاء التطبيق، يتم توليد معرف العميل والسر العميل. يجب توليد المفتاح العميل بشكل منفصل. انقر على "إنشاء سر عميل جديد" لتوليد مفتاح.

الخطوة 2: الحصول على رمز الوصول
عندما تكون الخطوة الأولى جاهزة، يمكننا التقدم للحصول على رمز وصول (Token). سنوضح هذه الخطوة من خلال Apidog. Apidog هو أداة ممتازة لتصحيح وإدارة واجهات برمجة التطبيقات.

يمكنك الحصول على رمز الوصول مباشرة في Apidog. إذا لم يكن لديك Apidog مثبتًا بعد، قم بتنزيله الآن!
- قم بإنشاء مشروع HTTP جديد في Apidog وافتحه، ثم أنشئ طلبًا جديدًا في المشروع واختر [تعديل المستند -> مصادقة -> OAuth 2.0 -> الخيار.

2. تكوين معرف العميل والمفتاح العميل وعنوان الاسترجاع
الوضع الافتراضي للاعتماد المحدد في صفحة OAuth 2.0 في Apifdog هو رمز التفويض (وضع رمز التفويض).
نظرًا لأن GitHub OAuth 2.0 تستخدم أيضًا رمز التفويض (وضع رمز التفويض)، فلا تحتاج إلى التبديل هنا.

ثم ابحث عن معرف العميل والسر العميل وعنوان URL للاسترجاع في أسفل الصفحة. سيتم الحصول على معرف العميل (معرف العميل) والسر العميل (السر العميل) وعنوان الاسترجاع الذي تم تكوينه (عنوان URL للاسترجاع) من خدمة OAuth 2.0 الخاصة بـ GitHub.
فقط قم بملئها. المعلمات المحددة هي التكوينات في "الخطوة 1" أعلاه.

3. تكوين عنوان طلب رمز التفويض
وفقًا لوثائق GitHub الرسمية، عند تنفيذ مصادقة OAuth 2.0، يكون عنوان الطلب (عنوان URL للمصادقة) لرمز التفويض هو:
https://github.com/login/oauth/authorize
فقط قم بملء عنوان الطلب الخاص برمز التفويض هذا في عنوان URL للمصادقة. يمكننا أن نفهم هذا العنوان على أنه صفحة تسجيل دخول التفويض.
ستُفتح هذه الصفحة عند التحقق من حالة تسجيل الدخول للمرة الأولى (إنها نافذة على العميل)، ثم سيُطلب منك ملء اسم المستخدم وكلمة المرور.

بشكل عام، عند إنشاء صفحة تسجيل دخول التفويض يدويًا، يجب تضمين بعض المعلمات بعد عنوان التفويض.
ومع ذلك، في Apidog، عادةً لا تحتاج إلى تضمين المعلمات بعد عنوان URL، فقط الجزء الذي أمام علامة الاستفهام? يكفي، لأن المعلمات الأخرى قد تم تكوينها بشكل منفصل في خيارات أخرى.
بالطبع، إذا كنت ترغب في تضمين بعض معلمات الاستعلام، يمكنك أيضًا إضافتها. انقر على الأيقونة خلف مربع الإدخال للإضافة:

يمكننا أيضًا توسيع خيار "المزيد" وملء قيم المعلمات التي تحتاج إلى تعبئتها في الخيارات المقابلة. على سبيل المثال، في "النطاق"، يمكنك ملء الأذونات المطلوبة، مثل read:user، user:email، إلخ.
يمكنك الاطلاع على المزيد من الأذونات في وحدة الأذونات من وثائق المساعدة الخاصة بـ GitHub لعرضها. قم بملء الحالة في خيار "الحالة". الحالة تمنع تزوير الطلب عبر المواقع.

4. تكوين عنوان طلب رمز الوصول
وفقًا لوثائق GitHub الرسمية، للتقدم للحصول على رمز وصول، العنوان المطلوب هو:
https://github.com/login/oauth/access_token
فقط قم بملء العنوان أعلاه في حقل إدخال عنوان URL لرمز الوصول في صفحة OAuth 2.0 الخاصة بـ Apidog.

5. الحصول على رمز الوصول ل خدمة GitHub OAuth 2.0
بعد إعداد عناصر التكوين أعلاه، يمكنك النقر على زر "الحصول على الرمز" للحصول على رمز الوصول.
بعد النقر، إذا كانت هذه هي المرة الأولى التي تقوم فيها بتسجيل الدخول، ستظهر لك نافذة لمنح الإذن. فقط قم بملء اسم المستخدم وكلمة المرور الخاصة بحساب GitHub الخاص بك.

بعد ملء اسم المستخدم وكلمة المرور، سيُطلب منك تأكيد التفويض أو القيام بالتحقق بخطوتين. بعد التحقق، انقر على تأكيد.
بعد اكتمال التفويض، سيتم الحصول تلقائيًا على رمز الدخول وعرضه على الصفحة. في الوقت نفسه، سيتم أيضًا تحليل المعلومات الأخرى التي ترجعها GitHub، كما هو موضح في الشكل أدناه. يظهر "منتهي الصلاحية" هنا لأنه لم يتم إرجاع خاصية expires_in لنا، لذا لا يمكننا إجراء حكم. ومع ذلك، فإن هذا الرمز قابل للاستخدام. دعونا نبدأ طلبًا أدناه.

الخطوة 3: الوصول إلى الموارد المفتوحة بناءً على الرمز
بعد أن تحصل على رمز الوصول (Token)، يمكنك استخدام هذا الرمز لاستدعاء الموارد المفتوحة لـ GitHub. يمكنك عرض الموارد المفتوحة المحددة في واجهة برمجة التطبيقات الخاصة بـ GitHub.
على سبيل المثال، واجهة برمجة التطبيقات التالية تحصل على معلومات المستخدم. إذا لم تتم استعادة واجهتك، تحتاج إلى التحقق مما إذا كان لديك الأذونات. كما ذُكر في القسم 3 من "الخطوة 2"، فقط قم بتكوينه في النطاق.

عند إرسال طلب، سيقوم Apidog تلقائيًا بإضافة الرمز إلى تفويض رأس الطلب، ويضيفه إلى البير، ويرسله. إذا كنت ترغب في تضمين الرمز في عنوان URL، يمكنك أيضًا تعديل "إضافة موقع" للرمز في عناصر التكوين الخاصة بالصفحة واختيار "معلمات الاستعلام".

الملخص
OAuth 2.0 هو إطار تفويض يسمح لتطبيقات الطرف الثالث بالحصول على رموز الوصول دون الحاجة إلى تقديم المستخدم لاسم المستخدم وكلمة المرور. عملية التفويض التي استخدمتها GitHub هي "عملية تفويض رمز التفويض"، ويمكن تصحيح أخطائها وتكوينها في Apidog.
