OpenID مقابل OAuth

Zhihuang Lin

Zhihuang Lin

July 3, 2024

Technology

لضمان أمان معلومات المستخدم والسماح للتطبيقات الخارجية بالوصول إلى الموارد المقيدة، ظهرت تقنيتان رئيسيتان: OpenID Connect و OAuth. بينما يتم مناقشة هاتين التقنيتين معًا في كثير من الأحيان، إلا أنهما تختلفان بشكل أساسي في موقعهما الوظيفي وأهدافهما الأساسية.

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

في هذه المدونة، سنتعمق في جوهر وآليات عمل وكيفية استخدام كل من OpenID Connect وOAuth، بالإضافة إلى العلاقة الدقيقة والوثيقة بينهما.

ما هو OpenID Connect؟

OpenID Connect (OIDC) هو بروتوكول تحقق من الهوية يعتمد على إطار عمل OAuth 2.0، حيث يمتد بفائدة OAuth من خلال إدخال مفهوم رمز الهوية (ID token). لا يسمح OIDC فقط للمستخدمين بتفويض التطبيقات الخارجية للوصول إلى مواردهم، بل يوفر أيضًا التحقق من معلومات هوية المستخدم، مما يتيح الوصول الآمن إلى خدمات متعددة باستخدام بيانات تسجيل دخول واحدة.

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

عملية التحقق من الهوية باستخدام OpenID Connect:

  1. الوصول إلى التطبيق: عندما يرغب المستخدم في استخدام تطبيق أو خدمة، إذا كان التطبيق بحاجة إلى التحقق من هوية المستخدم، سيتم توجيه المستخدم إلى مزود خدمة التحقق من الهوية، OpenID Connect provider (OP) لتسجيل الدخول.

  2. تسجيل دخول المستخدم: يدخل المستخدم اسم المستخدم وكلمة المرور (أو يخضع لآليات التحقق الأخرى التي يدعمها OP) في واجهة تسجيل الدخول الخاصة بـ OP. بمجرد تسجيل الدخول بنجاح، سيؤكد مزود OpenID Connect هوية المستخدم.

  3. إصدار رمز الهوية (ID token): بعد تأكيد هوية المستخدم، سيولد مزود OpenID Connect رمزًا خاصًا يسمى رمز الهوية. يحتوي هذا الرمز على معلومات هوية المستخدم، مثل اسم المستخدم وعنوان البريد الإلكتروني وبيانات رئيسية أخرى، مما يضمن التمثيل الرقمي ونقل هوية المستخدم.

  4. استخدام رمز الهوية: بعد الحصول على رمز الهوية، يمكن للمستخدم تقديمه للتطبيق الذي كان يرغب في الوصول إليه سابقًا. سيتم بعد ذلك تفعيل آلية التحقق من قبل التطبيق للتحقق من الرمز والتأكد من أنه صادر عن مزود OpenID Connect موثوق به وأنه لم ينتهِ صلاحيته.

  5. الوصول إلى التطبيق: بمجرد أن يتحقق التطبيق من صحة رمز الهوية، سيسمح للمستخدم بالوصول إلى الموارد أو الخدمات المحمية. بهذه الطريقة، لا يحتاج المستخدم إلى التسجيل وتسجيل الدخول في كل تطبيق بشكل منفصل، بل يمكنه استخدام رمز الهوية الصادر عن مزود OpenID Connect.

  6. ضمان الأمان: يستخدم OpenID Connect تقنية JSON Web Token (JWT) المتقدمة لتوليد والتحقق من الرموز، مما يقلل بشكل فعال من مخاطر التلاعب بالبيانات وسرقتها. بالإضافة إلى ذلك، يدعم OpenID Connect أيضًا بشكل مرن أنماطًا متعددة للتحقق من الهوية والتفويض، مثل نمط رمز التفويض، والنمط الضمني، والنمط المختلط، لتلبية متطلبات الأمان في سيناريوهات مختلفة.

ما هو OAuth؟

باختصار، OAuth هو بروتوكول يسمح للتطبيقات الخارجية بالوصول إلى الموارد الحساسة المخزنة للمستخدم (مثل مكتبة الصور، قوائم الاتصال، إلخ) على خدمة أخرى، دون الوصول المباشر إلى بيانات تسجيل دخول المستخدم (اسم المستخدم وكلمة المرور). هذه الآلية تميل أكثر نحو "التفويض" بدلاً من "التحقق من الهوية".

على سبيل المثال، إذا كنت ترغب في استخدام حساب Google الخاص بك لتسجيل الدخول إلى تطبيق أخبار، يمكن للتطبيق استخدام OAuth لطلب معلوماتك العامة (مثل الصورة الشخصية، والاسم المستعار) من حساب Google الخاص بك، دون الحاجة إلى تقديم اسم مستخدم وكلمة مرور حساب Google مباشرة لتطبيق الأخبار.

عملية التفويض باستخدام OAuth:

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

  2. إعادة التوجيه إلى خادم التفويض: سيوجه التطبيق الخارجي طلبك إلى صفحة على خادم التفويض، والتي ستطلب منك عادةً تسجيل الدخول إلى الخدمة التي ترغب في تفويضها.

  3. تسجيل دخول المستخدم والتفويض: في صفحة خادم التفويض، تحتاج إلى تسجيل الدخول باستخدام حسابك. بعد تسجيل الدخول، ستطلب الصفحة منك الموافقة على السماح للتطبيق الخارجي بالوصول إلى معلوماتك.

  4. إصدار رمز الوصول من خادم التفويض: إذا وافقت، سيولد خادم التفويض "تصريحًا" خاصًا يسمى رمز الوصول. هذا الرمز يشبه تصريح دخول مؤقت يسمح للتطبيق الخارجي بالوصول إلى معلوماتك لفترة محددة.

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

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

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

الاختلافات والروابط بين OpenID Connect وOAuth

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

تطبيق OpenID Connect في هذه الحالة:

  1. التحقق من الهوية: عندما يزور العملاء موقع "جنة الحيوانات الأليفة" لأول مرة أو يقومون بتنزيل واستخدام تطبيق تتبع صحة الحيوانات الأليفة، يحتاجون إلى التسجيل وتسجيل الدخول. لتوفير تجربة تسجيل دخول مريحة، يقرر المتجر استخدام OpenID Connect لتنفيذ تسجيل الدخول الموحد (SSO).

  2. رمز الهوية (ID Token): يمكن للعملاء استخدام بيانات الاعتماد الخاصة بهم من خدمات أخرى تدعم OpenID Connect (مثل حسابات وسائل التواصل الاجتماعي) لتسجيل الدخول. بمجرد تسجيل الدخول بنجاح، سيصدر مزود OpenID Connect رمز هوية للعميل. يحتوي هذا الرمز على معلومات هوية العميل ويتم تشفيره وتوقيعه.

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

تطبيق OAuth في هذه الحالة:

  1. تفويض التطبيق الخارجي: لنفترض أن "جنة الحيوانات الأليفة" ترغب في التعاون مع تطبيق خارجي يسمى "مذكرات الحيوانات الأليفة" والسماح للعملاء بمزامنة سجلات شراء مستلزمات الحيوانات الأليفة وبيانات صحة الحيوانات الأليفة من "جنة الحيوانات الأليفة" إلى "مذكرات الحيوانات الأليفة".

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

  3. حماية بيانات المستخدم: من خلال OAuth، لن يتم الكشف عن بيانات اعتماد تسجيل دخول العميل (اسم المستخدم وكلمة المرور) مباشرة لتطبيق "مذكرات الحيوانات الأليفة"، بل سيتم مشاركتها بشكل آمن من خلال رمز الوصول. بهذه الطريقة، حتى إذا تعرض تطبيق "مذكرات الحيوانات الأليفة" للهجوم، لا يمكن للمهاجم الحصول مباشرة على بيانات اعتماد تسجيل دخول العميل.

الخلاصة

باختصار، يمكن تلخيص الاختلافات والروابط بين OAuth وOpenID Connect على النحو التالي.

  1. الأساس والامتداد:

    • OAuth هو إطار عمل للتفويض يسمح للتطبيقات الخارجية بالحصول على أذونات وصول محدودة دون استخدام اسم المستخدم وكلمة المرور الخاصة بالمستخدم.
    • OpenID Connect، من ناحية أخرى، يبني على أساس OAuth 2.0 ويمتد بفائدته من خلال إضافة طبقة التحقق من الهوية.
  2. الرموز والتحقق من الهوية:

    • في OAuth، التركيز الرئيسي هو على التفويض، أي السماح للتطبيقات بالوصول إلى موارد المستخدم، بينما يركز OpenID Connect أكثر على التحقق من الهوية، أي تأكيد هوية المستخدم.
    • يقدم OpenID Connect مفهوم رمز الهوية (ID token)، وهو رمز JSON Web Token (JWT) يحتوي على معلومات هوية المستخدم. لا يثبت هذا الرمز هوية المستخدم فحسب، بل يمكن أن يتضمن أيضًا معلومات الملف الشخصي للمستخدم.
  3. التعاون:

    • عندما يحتاج التطبيق إلى التحقق من هوية المستخدم والوصول إلى موارد المستخدم، يمكن أن يعمل OpenID Connect وOAuth معًا.
    • يقوم المستخدم أولاً بالتحقق من هويته من خلال OpenID Connect، والحصول على رمز الهوية، ثم يمكن للتطبيق استخدام هذا الرمز وتدفق OAuth للحصول على إذن للوصول إلى موارد المستخدم.

باختصار، OpenID Connect وOAuth هما بروتوكولان متكاملان للتحقق من الهوية والتفويض، يوفران معًا حلًا آمنًا ومرنًا وسهل الاستخدام للتحقق من الهوية والتفويض لتطبيقات الويب والجوال الحديثة.

Tags: