ما هو منح OAuth 2.0؟
منح OAuth 2.0 هو عملية تفويض تُمكّن العميل (Client) من طلب رمز الوصول (Access token) من خادم التفويض (Authorization server) . قد تسمع أيضًا مصطلحات أخرى حول هذا المفهوم، لذا دعنا نوضحها قبل التعمق:
- منح OAuth 2.0: يُعرف أيضًا باسم “نوع منح OAuth 2.0”، “تدفق OAuth 2.0”، أو “منح تفويض OAuth 2.0”. في أغلب السياقات، تشير هذه المصطلحات إلى نفس المفهوم.
- خادم التفويض (Authorization server) : الخادم الذي يصدر رموز الوصول إلى العميل. في OpenID Connect (OIDC)، يكون خادم التفويض هو نفسه OpenID Provider (OP) .
- طلب الترخيص (Authorization request) : الطلب الذي يقدمه العميل إلى خادم التفويض للحصول على رمز وصول. في OpenID Connect (OIDC)، يُشار إليه أيضًا كـ طلب مصادقة (Authentication request) .
من أجل الوضوح، سنستخدم المصطلحات الأولية الموضحة أعلاه بشكل متسق طوال هذه المقالة.
عملية منح OAuth 2.0 على مستوى عالٍ بسيطة للغاية:
بعد أن يتلقى العميل رمز الوصول، يمكنه استخدامه للوصول إلى الموارد المحمية (مثل، واجهات برمجة التطبيقات) نيابةً عن المستخدم أو بنفسه.
لاحظ أنه وفقاً للمنح المحدد، قد يقوم العميل وخادم التفويض بتبادل معلومات إضافية ويشملون خطوات أكثر في العملية. على سبيل المثال، يشمل منح رمز التفويض مصادقة (Authentication) وتفويض المستخدم، وتوليد الرمز، وتبادل الرموز.
المنح المختلفة في OAuth 2.0
تعرف مواصفة OAuth 2.0 الأساسية أربع منح يُمكن للعملاء استخدامها للحصول على رموز الوصول:
- منح رمز التفويض : المنح الأكثر أمانًا والمُوصى به لغالبية التطبيقات. يُفرض استخدام مفتاح إثبات تبادل الكود (Proof Key for Code Exchange, PKCE) لجميع العملاء في OAuth 2.1 .
- المنح الضمني : منح مبسط تم إيقافه في OAuth 2.1 بسبب مخاوف أمنية.
- منح معلومات اعتماد كلمة مرور مالك المورد (ROPC) : منح يتم فيه تبادل بيانات اعتماد المستخدم مباشرة للحصول على رمز وصول. لا يُوصى به لمعظم التطبيقات بسبب المخاطر الأمنية.
- منح معلومات اعتماد العميل : منح يُستخدم من قبل العملاء السريون للحصول على رمز وصول دون مشاركة المستخدم.
مع تطور الصناعة، يتم التخلي عن المنح الضمني وROPC لصالح تدفقات أكثر أمانًا وموحدة. للتطبيقات الجديدة، الخيارات واضحة:
- لمصادقة (Authentication) وتفويض المستخدم، استخدم منح رمز التفويض مع PKCE.
- للاتصال بين الآلات ( اتصال الآلة بالآلة (Machine-to-machine) )، استخدم منح معلومات اعتماد العميل.
منح أخرى في OAuth 2.0
بالإضافة إلى المنح الأربعة الأساسية، هناك امتدادات أخرى تحدد منحًا جديدة لحالات استخدام معينة. على سبيل المثال:
- منح تفويض الأجهزة هو منح مصمم للأجهزة ذات القدرات الإدخال المحدودة، مثل أجهزة التلفزيون الذكية وأجهزة إنترنت الأشياء.
- التدفق الهجين هو منح من OpenID Connect يجمع بين منح رمز التفويض والمنح الضمني.
المنح في OpenID Connect (OIDC)
في OpenID Connect (OIDC) ، يمتد مفهوم المنح ليشمل رموز المعرف التي تمثل معلومات هوية المستخدم بالإضافة إلى رموز الوصول. يضيف OIDC امتدادين لمنح OAuth 2.0 (رمز التفويض والضمني) ليشمل رموز المعرف، ويقدم منحًا جديدًا يسمى التدفق الهجين الذي يجمع بين كليهما.
مثل OAuth 2.0، يُوصى فقط باستخدام منح رمز التفويض مع PKCE في OIDC للمصادقة (Authentication) وتفويض المستخدم.
وفي نفس الوقت، نظرًا لأن OIDC مبني على أساس OAuth 2.0، يمكن استخدام منح أخرى مثل منح معلومات اعتماد العميل على نفس خادم التفويض، طالما أن الخادم يدعمها.