بروتوكول أوث
أوث عبارة عن بروتوكول تخويل قياسي مفتوح يتيح للجهات الخارجية الوصول إلى بيانات المستخدم بدون الحاجة إلى معرفة كلمة مرور المستخدم. وبدلاً من مشاركة المستخدمين لكلمات مرورهم مع تطبيق مباشرةً، يعمل بروتوكول "OAuth" كمفتاح تشغيل محدد القدرات تستخدمه التطبيقات للوصول إلى بيانات المستخدم والعمل بالنيابة عنه.
من خلال خدمات تطبيقات قوقل للمؤسسات (Google Apps for Business ) وخدمات تطبيقات جوجل التعليمية (Google Apps for Education) يمكن للمشرفين استخدام بروتوكول "OAuth" ثنائي لتفويض المرجع على مستوى النطاق. عند تضمن تطبيق على مفتاح وسر عميل OAuth (بشكل يعادل تقريبًا اسم المستخدم وكلمة المرور لحساب يؤدي أحد الأدوار)، يُسمح له بالعمل كأي مستخدم في النطاق عند الدخول إلى واجهات برمجة التطبيقات لبيانات قوقل. وبخلاف بروتوكول "OAuth" الثلاثي، المستخدمون ليسوا بحاجة إلى الموافقة بشكل فردي، حيث يتم اتخاذ هذا القرار بالنيابة عنهم عن طريق المشرف. ويستطيع المشرفون إلغاء المفتاح وتغيير السر والتحكم في تحديد واجهات برمجة التطبيقات التي ستقبل تفويضًا على مستوى النطاق.
ويمكن لمجموعتين أساسيتين استخدام بروتوكول OAuth الثنائي، وقد تختلف عناصر التحكم في الدخول المطبقة إلى حد كبير في كل حالة.
ان المصادقة والتحقق من هوية المستخدم في تطبيقات المخدم-الزبون التقليدية تطلب من المستخدم ادخال بياناته السرية مثل اسم المستخدم وكلمة السر لكي تسمح له بالوصول إلى موارد محمية خاصة به، ولكن بعد أن بدأت هذه التطبيقات بالتضخم وظهرت الحاجة إلى تطبيقات وسيطة تستخدم API وكمثال على ذلك برنامج المحادثة الشهير Nimbuzz الذي اشتهر بشكل واسع منذ سنوات عدة، يسمح هذا التطبيق لك بالدمج بين حسابات المحادثة لديك مثل فيسبوك، غوغل، ياهو، الخ… عبر برنامج واحد، في البداية كان هذا البرنامج يطلب منك ادخال اسم المستخدم وكلمة السر لكل حساب لكي يتم تخزينها على سيرفر البرنامج والوصول إلى حساباتك عند الحاجة.لم يمانع أحد من منح هذا البرنامج بياناتهم السرية ربما بسبب شهرة البرنامج والثقة به، ولكن ماذا لو تعرض هذا البرنامج للاختراق وسيطر أحدهم على قاعدة البيانات الخاصة به؟ هل سيحصل على جميع حساباتنا؟ بالتأكيد نعم ولكن هذه الطريقة غير مستخدمة اليوم فنحن بأمس الحاجة لحل آمن.
بروتوكول OAuth هو عبارة عن طريقة آمنة للتحقق من هوية المستخدمين دون الحاجة إلى بياناتهم السرية مثل كلمة السر أو سؤال الأمان. أول ظهور للبروتوكول كان في عام 2006 حيث قام بتطويره بلاين كوك Blaine Cook الذي كان يعمل في تطوير مصادقة OpenID الخاصة بتويتر، في ذلك الوقت لاحظ بلاين أن OpenID غير كافية لمصادقة مستخدمي تويتر لذلك بدأ بالبحث عن طريقة أخرى وبالتعاون مع كريس ميسينا Chris Messina ولد بروتوكول OAuth الإصدار الأول 1.0 .ثم تبعه بروتوكول OAuth 2.0 عبارة عن منصة مصادقة تمكن تطبيقات وسيطة من الوصول إلى بيانات محدودة بالمستخدم عبر خدمة تعتمد على بروتوكول بروتوكول نقل النص الفائق.
بروتوكول OAuth عبارة عن طبقة حماية وسيطة تقوم بفصل بيانات المستخدم الخاصة عن بيانات المستخدم التي يريده التطبيق الوصول إليها ولتكن هذه البيانات على سبيل المثال جهات الاتصال.
إن استخدام البرتوكول في هذه الحالة لن يسمح لبرنامج المحادثة بالوصول إلى صورك الخاصة أو $1أي بيانات أخرى أو صلاحيات لا تريد مشاركتها ،بينما كان ذلك غير ممكن في طريقة المصادقة التقليدية.
أولاً - يقوم الزبون بطلب مصادقة من السيرفر الذي يحوي على المصادر التي يرغب الزبون بالوصول إليها ( في مثالنا السابق الزبون هو تطبيق الNimBuzz، والسيرفر هو الفيسبوك، والمصادر هي جهات الاتصال، تظهر رسالة من قبل فيس بوك لمستخدم برنامج الشات وهو المستخدم النهائي في هذه الحالة، تخبره بأن هذا البرنامج سيقوم بالوصول إلى الموارد المذكورة، في حال وافق المستخدم على ذلك ننتقل في عملية المصادقة إلى المرحلة التالية.
ثانياً - يستقبل برنامج المحادثة الموافقة على الوصول على البيانات.
ثالثاً- يطلب برنامج المحادثة من السيرفر الحصول على Token (وهي عبارة عن سلسلة محارف) ستستخدم هذه السلسلة بمثابة وسيلة مصادقة بين برنامج المحادثة و السيرفر، عندما يقوم برنامج المحادثة في المرات اللاحقة بعرض هذه الToken للسيرفر سيعلم السيرفر أن هذا البرنامج يحق له الوصول إلى الموارد المحددة والمتفق عليها مسبقاً.
رابعاً- سيتأكد السيرفر مرة أخرى بأن البرنامج حصل على موافقة المستخدم النهائي في الوصول إلى الموارد وبناء على ذلك سيرسل له الToken، و في حال -على سبيل المثال- طلب البرنامج من السيرفر Token للوصول إلى بيانات غير مسموح له بالوصول إليها مثل صور المستخدم ستفشل عملية الحصول إلى تلك البيانات.
خامساً- سيقوم البرنامج بطلب الوصول إلى بيانات محمية من السيرفر مثل جهات الاتصال عبر إرسال الToken إلى السيرفر.
سادساً- سيتأكد السيرفر أن هذه الToken صحيحة وأنها تسمح فعلا للبرنامج بالوصول إلى البيانات المذكورة و هي جهات الاتصال، بناء على ذلك سيتم إرسال جهات الاتصال إلى البرنامج.
وأخيراً لابد من التنويه إلى أن استخدام أي تطبيق وسيط يطلب من المستخدم الوصول إلى بيانات خاصة مثل فيسبوك، غوغل، تويتر، الخ... لا يستخدم بروتوكول OAuth هو تطبيق غير أمن ولا يجب استخدامه أبدا، إذ أنه مع وجود هذا البروتكول لايوجد أي سبب لتقديم بيانات المصادقة بأي شكل كان.