بروتوكول OAuth
OAuth بروتوكول تفويض مفتوح يتيح لتطبيق طرف ثالث الحصول على وصول محدود إلى موارد المستخدم المحمية على خدمة أخرى. يغني عن نقل اسم المستخدم وكلمة المرور، مما يحمي البيانات الشخصية.
المحتويات
ما هو OAuth بمفاهيم مبسطة
OAuth (Open Authorization) بروتوكول تفويض يتيح لتطبيق الوصول إلى بياناتك على خدمة أخرى دون نقل اسم المستخدم أو كلمة المرور إليه. فبدل كلمة المرور يتلقى التطبيق مفتاح وصول مؤقتًا خاصًا (توكن).
بمفاهيم مبسطة، OAuth كبطاقة دخول رقمية تعطيها لضيف ليدخل منزلك، لكن إلى المدخل فقط وليس إلى جميع الغرف. فأنت لا تعطيه مفاتيح جميع الأبواب (كلمة مرورك)، بل بطاقة خاصة لمرة واحدة بصلاحيات محدودة.
المثال الكلاسيكي هو زر «الدخول عبر Google» أو «الدخول عبر VKontakte» في أي موقع. تضغط الزر، فيُعاد توجيهك إلى صفحة Google حيث تدخل كلمة مرورك (وليس على موقع طرف ثالث!)، وتؤكد الوصول، فلا يتلقى الموقع إلا ما أجزت له — اسمك وبريدك الإلكتروني مثلًا. وتبقى كلمة مرورك سرية.
يحل OAuth المشكلة الرئيسية للأنظمة القديمة — فسابقًا كانت التطبيقات تطلب اسم مستخدمك وكلمة مرورك على خدمة أخرى، وكان ذلك خطيرًا للغاية: إذا تبيّن أن التطبيق احتياليًا خسرت الوصول إلى الحساب بأكمله. أما OAuth فيمنح وصولًا محدودًا إلى بيانات محددة لمدة محددة. ووفق Okta، يستخدم أكثر من 80% من تطبيقات المؤسسات OAuth للتفويض، ويبلغ عدد توكنات OAuth الصادرة يوميًا مليارات.
تعرّف على علاقة OAuth بأمن تطبيقات الويب في مقال أمن المعلومات.
كيف يعمل OAuth
يمكن تصور عملية OAuth كالحصول على بطاقة دخول رقمية. وتشارك فيها أربعة أطراف:
- مالك المورد (Resource Owner): أنت — المستخدم الذي يملك البيانات ويمنح التفويض.
- العميل (Client): تطبيق طرف ثالث يريد الوصول إلى بياناتك (تطبيق جوال أو موقع إلكتروني مثلًا).
- خادم التفويض: الخادم الذي يتحقق من هويتك ويصدر التوكنات (حسابات Google وGitHub مثلًا).
- خادم الموارد: الخادم الذي تُخزَّن فيه بياناتك (Google Drive أو API ملف VK الشخصي مثلًا).
وتجري العملية كما يلي:
- تضغط «الدخول عبر Google» على موقع طرف ثالث.
- يعيدك الموقع التوجيه إلى خادم Google حيث تدخل كلمة المرور.
- يسألك Google: «هل تسمح لهذا الموقع بالوصول إلى اسمك وبريدك الإلكتروني؟»
- تضغط «سماح».
- يمنح Google الموقع رمزًا مؤقتًا ويعيد توجيهك إلى الوراء.
- يستبدل الموقع الرمز بتوكن وصول.
- يستخدم الموقع التوكن لطلب بياناتك عبر API الخاص بـ Google.
تعرّف على كيفية عمل التوكنات في مقال توكن الأمن.
أنواع منح OAuth 2.0
يدعم OAuth 2.0 عدة مسارات تفويض (Grants) تختار بحسب نوع التطبيق (ويب، جوال، خادم) ومستوى الثقة:
- Authorization Code Grant: المسار الأكثر انتشارًا وأمانًا لتطبيقات الويب والجوال. يتلقى العميل رمز تفويض ثم يستبدله لاحقًا بتوكن وصول. يُنقل الرمز عبر متصفح المستخدم، بينما يُنقل التوكن عبر قناة مؤمنة بين خادم العميل وخادم التفويض.
- Implicit Grant (متجاوز زمنيًا): مسار مبسط للتطبيقات أحادية الصفحة (SPA) يعاد فيه التوكن مباشرة إلى المتصفح. يعد أقل أمانًا ولا يوصى به في الممارسة الحديثة.
- Resource Owner Password Credentials Grant: مسار ينقل فيه المستخدم اسم مستخدمه وكلمة مروره إلى العميل مباشرة. يُستخدم فقط للتطبيقات الموثوقة (التطبيقات الجوالة الرسمية للبنوك مثلًا). أسلوب عالي المخاطر.
- Client Credentials Grant: يُستخدم للتفاعل من خادم إلى خادم حيث لا يتدخل أي مستخدم. يصادق العميل ببيانات اعتماده الخاصة (client ID وclient secret) ويحصل على توكن للوصول إلى الموارد المحمية.
اختيار المسار الصحيح مرحلة حاسمة في تصميم أمن التطبيق. فالاختيار الخاطئ قد يؤدي إلى ثغرات واختراق للبيانات.
OAuth 1.0 مقابل OAuth 2.0
OAuth 2.0 هو الإصدار الحديث من البروتوكول الذي حل محل OAuth 1.0. أبرز الفروقات:
- البساطة: OAuth 2.0 أبسط بكثير للمطورين. لا حاجة إلى التشفير المعقد لتوقيع الطلبات (في OAuth 1.0 كان لا بد من توليد توقيع رقمي لكل طلب).
- المرونة: يدعم OAuth 2.0 حالات استخدام مختلفة: تطبيقات الويب، تطبيقات الجوال، الأجهزة بلا متصفح (IoT)، التفاعل من خادم إلى خادم.
- التوكنات: يستخدم OAuth 2.0 توكنات وصول وrefresh tokens مما يتيح تمديد الوصول دون إعادة إدخال بيانات المستخدم.
- الأمن: يعتمد OAuth 2.0 على نقل HTTPS لحماية التوكنات ويستند أكثر إلى TLS للأمن.
اليوم يعد OAuth 2.0 معيار الواقع العملي للتفويض على الإنترنت. يستخدمه Google وFacebook وGitHub وMicrosoft وYandex وآلاف الخدمات الأخرى. تعرّف على كيفية اندماج OAuth مع واجهات API في مقال البنية التحتية.
أمن OAuth
رغم كونه بروتوكولًا آمنًا، توجد مخاطر يهم أخذها في الحسبان عند استخدام OAuth:
- اعتراض التوكن: إذا اعترض المهاجم توكن وصول (عبر اتصال غير مؤمَّن أو هجوم Man-in-the-Middle مثلًا) فقد يستخدمه قبل انتهاء صلاحيته. استخدام HTTPS إلزامي.
- التصيد (Phishing): يمكن للمهاجمين إنشاء صفحات دخول مزيفة تحاكي خادم التفويض لسرقة بيانات الاعتماد. من المهم التحقق دائمًا من عنوان URL قبل إدخال كلمة المرور.
- هجمات CSRF (تزوير الطلبات عبر المواقع): هجمات يدفع فيها المهاجم المستخدم إلى تنفيذ تصرفات غير مرغوبة على موقع مصادَق عليه. وللحماية منها يُستخدم المعامل state في طلبات OAuth.
- اختراق client secret: إذا حصل المهاجم على client secret (المفتاح السري للتطبيق) فقد ينتحل صفة تطبيق شرعي. احفظ client secret في مكان آمن.
لتعزيز الأمن يوصى باستخدام عمر قصير لتوكنات الوصول (ساعة مثلًا) وrefresh tokens لتمديد الجلسة دون إعادة إدخال كلمة المرور. كما من المهم استخدام PKCE (Proof Key for Code Exchange) للحماية من اعتراض رمز التفويض في تطبيقات الجوال.
الأسئلة المتكررة
ما هو OAuth بمفاهيم مبسطة؟
OAuth وسيلة للدخول إلى موقع دون إنشاء اسم مستخدم وكلمة مرور جديدين. تضغط «الدخول عبر Google» أو «الدخول عبر VKontakte»، وتوافق، فلا يحصل الموقع إلا على ما أجزت له (اسمك وبريدك الإلكتروني مثلًا). ولا تُنقل كلمة مرورك إلى الموقع قط. إنه كبطاقة دخول رقمية بصلاحيات محدودة بدل تسليم مفاتيح الشقة بأكملها. اقرأ عن أمن البيانات في مقال أمن المعلومات.
كيف يعمل OAuth 2.0؟
يعمل OAuth 2.0 بمبدأ «بطاقة الدخول الرقمية»: توافق على الخدمة (Google مثلًا)، فتمنح التطبيق مفتاحًا مؤقتًا (توكن) للوصول إلى بياناتك. لا يعرف التطبيق كلمة مرورك ولا يمكنه الوصول إلى ما لم تجز له. تشارك في العملية أربعة أطراف: مالك المورد (أنت)، والعميل (التطبيق)، وخادم التفويض (Google)، وخادم الموارد (API). والتوكن صالح لمدة محدودة ويمكن إبطاله في أي وقت. اقرأ عن كيفية عمل التوكنات في مقال توكن الأمن.
ما الفرق بين OAuth 1.0 وOAuth 2.0؟
OAuth 2.0 هو الإصدار الحديث من البروتوكول. وهو أبسط استخدامًا للمطورين (لا توقيع معقد للطلبات)، ويدعم سيناريوهات أكثر (تطبيقات الجوال والأجهزة المتصلة والتفاعل بين الخوادم)، ويستخدم refresh tokens لتمديد الوصول دون إعادة إدخال. ويعتمد OAuth 2.0 أكثر على HTTPS للأمن. اليوم يُستخدم OAuth 2.0 في كل مكان بينما يعد OAuth 1.0 متجاوزًا زمنيًا.
لماذا نستخدم OAuth بدل نقل كلمة المرور ببساطة؟
OAuth أكثر أمانًا من نقل كلمة مرور. إذا تبيّن أن التطبيق احتياليًا فإنك مع OAuth لا تمنحه سوى وصول محدود (اسمك فقط مثلًا) لا الحساب بأكمله. ويمكنك إبطال الوصول في أي وقت من إعدادات حسابك. أما بنقل كلمة المرور فأنت تخاطر بالحساب كله — يستطيع المهاجم الوصول إلى جميع بياناتك بما فيها البريد والمستندات ومعلومات الدفع. اقرأ عن حماية الحسابات في مقال التحقق.
هل OAuth آمن وما مخاطره؟
يعد OAuth آمنًا عند استخدامه الصحيح. فالتوكنات تُنقل عبر قناة مؤمنة (HTTPS)، وعمرها محدود ونطاق صلاحياتها ضيق. لكن توجد مخاطر: اعتراض التوكن (هجوم MITM)، والتصيد (صفحة دخول مزيفة)، وهجمات CSRF، واختراق سر العميل. وللحماية استخدم HTTPS وعمرًا قصيرًا للتوكنات والمعامل state ضد CSRF وPKCE لتطبيقات الجوال.
أين يُستخدم OAuth وأي الشركات تستخدمه؟
يُستخدم OAuth في جميع التطبيقات الويب والجوالة الحديثة تقريبًا. أزرار «الدخول عبر Google» و«الدخول عبر Facebook» و«الدخول عبر Yandex» و«الدخول عبر VKontakte» هي OAuth. كما يُستخدم في واجهات API لتبادل البيانات بين الخدمات (تكامل CRM مع خدمات البريد مثلًا)، وفي أنظمة المؤسسات للمصادقة الأحادية (SSO)، وفي الأجهزة المتصلة. ويستخدمه Google وFacebook وGitHub وMicrosoft وYandex وVKontakte وآلاف الخدمات الأخرى. اقرأ عن إعداد واجهات API في مقال البنية التحتية.
ما الفرق بين OAuth وSSO (المصادقة الأحادية)؟
OAuth بروتوكول تفويض (ما يُسمح به تجاه بياناتك)، بينما SSO (Single Sign-On) حل مصادقة (من أنت). يتيح SSO الدخول مرة واحدة إلى النظام والحصول على الوصول إلى جميع التطبيقات دون إعادة إدخال كلمة المرور. وقد يكون OAuth جزءًا من حل SSO لكنهما مفهومان مختلفان. يقوم SSO غالبًا على بروتوكولات SAML أو OpenID Connect (الذي يستخدم OAuth 2.0 للمصادقة). يمنح OAuth الوصول إلى البيانات، ويسهل SSO الدخول إلى عدة أنظمة.
مصطلحات أخرى في «أمن المعلومات»
هل كانت هذه المعلومة مفيدة؟
احمِ شبكتك اليوم
اترك طلبًا — سيساعدك متخصصو أمن المعلومات لدينا في اختيار بروتوكول oauth وتهيئته ودمجه في بنيتك التحتية. سنحمي بياناتك من التهديدات.