لماذا نحتاج لبروتوكول OAuth
المعلوماتية >>>> اتصالات وشبكات
ان المصادقة والتحقق من هوية المستخدم في تطبيقات المخدم-الزبون التقليدية تطلب من المستخدم ادخال بياناته السرية مثل اسم المستخدم وكلمة السر لكي تسمح له بالوصول الى موارد محمية خاصة به، ولكن بعد ان بدأت هذه التطبيقات بالتضخم وظهرت الحاجة الى تطبيقات وسيطة تستخدم API وكمثال على ذلك برنامج المحادثة الشهير Nimbuzz الذي انتشهر بشكل واسع منذ سنوات عدة، يسمح هذا التطبيق لك بالدمج بين حسابات المحادثة لديك مثل فيسبوك، غوغل، ياهو، الخ… عبر برنامج واحد، في البداية كان هذا البرنامج يطلب منك ادخال اسم المستخدم وكلمة السر لكل حساب لكي يتم تخزينها على سيرفر البرنامج والوصول الى حساباتك عند الحاجة.
لم يمانع أحد من منح هذا البرنامج بياناتهم السرية ربما بسبب شهرة البرنامج والثقة به، ولكن ماذا لو تعرض هذا البرنامج للاختراق وسيطر احدهم على قاعدة البيانات الخاصة به؟ هل سيحصل على جميع حساباتنا؟ بالتأكيد نعم ولكن هذه الطريقة غير مستخدمة اليوم فنحن بأمس الحاجة لحل آمن، ماهو؟ هو بروتوكول OAuth .
بروتوكول OAuth هو عبارة عن طريقة آمنة للتحقق من هوية المستخدمين دون الحاجة الى بياناتهم السرية مثل كلمة السر أو سؤال الأمان. اول ظهور للبروتوكول كان في عام ٢٠٠٦ حيث قام بتطويره بلاين كوك Blaine Cook الذي كان يعمل في تطوير مصادقة OpenID الخاصة بتويتر، في ذلك الوقت لاحظ بلاين أن OpenID غير كافية لمصادقة مستخدمي تويتر لذلك بدأ بالبحث عن طريقة اخرى وبالتعاون مع كريس ميسينا Chris Messina ولد بروتوكول OAuth الاصدار الأول 1.0 .
بروتوكول OAuth 2.0 عبارة عن منصة مصادقة تمكن تطبيقات وسيطة من الوصول الى بيانات محدودة بالمستخدم عبر خدمة تعتمد على بروتوكول HTTP.
ماهو بروتوكول OAuth
بروتوكول OAuth عبارة عن طبقة حماية وسيطة تقوم بفصل بيانات المستخدم الخاصة عن بيانات المستخدم التي يريده التطبيق الوصول اليها ولتكن هذه البيانات على سبيل المثال جهات الاتصال.
إن استخدام البرتوكول في هذه الحالة لن يسمح لبرنامج المحادثة بالوصول الى صورك الخاصة أو أي بيانات اخرى أو صلاحيات لا تريد مشاركتها ،بينما كان ذلك غير ممكن في طريقة المصادقة التقليدية.
ولكن كيف يعمل بروتكول OAuth ؟
أولاً - يقوم الزبون بطلب مصادقة من السيرفر الذي يحوي على المصادر التي يرغب الزبون بالوصول اليها ( في مثالنا السابق الزبون هو تطبيق الNimBuzz، والسيرفر هو الفيسبوك، والمصادر هي جهات الاتصال، تظهر رسالة من قبل فيس بوك لمستخدم برنامج الشات وهو المستخدم النهائي في هذه الحالة، تخبره بأن هذا البرنامج سيقوم بالوصول إلى الموارد المذكورة، في حال وافق المستخدم على ذلك ننتقل في عملية المصادقة الى المرحلة التالية.
ثانياً - يستقبل برنامج المحادثة الموافقة على الوصول على البيانات.
ثالثاً- يطلب برنامج المحادثة من السيرفر الحصول على Token (وهي عبارة عن سلسلة محارف) ستستخدم هذه السلسلة بمثابة وسيلة مصادقة بين برنامج المحادثة و السيرفر، عندما يقوم برنامج المحادثة في المرات اللاحقة بعرض هذه الToken للسيرفر سيعلم السيرفر أن هذا البرنامج يحق له الوصول إلى الموارد المحددة والمتفق عليها مسبقاً.
رابعاً- سيتأكد السيرفر مرة اخرى بأن البرنامج حصل على موافقة المستخدم النهائي في الوصول إلى الموارد وبناء على ذلك سيرسل له الToken، و في حال -على سبيل المثال- طلب البرنامج من السيرفر Token للوصول إلى بيانات غير مسموح له بالوصول اليها مثل صور المستخدم ستفشل عملية الحصول إلى تلك البيانات.
خامساً- سيقوم البرنامج بطلب الوصول إلى بيانات محمية من السيرفر مثل جهات الاتصال عبر إرسال الToken إلى السيرفر.
سادساً- سيتأكد السيرفر أن هذه الToken صحيحة وأنها تسمح فعلا للبرنامج بالوصول إلى البيانات المذكورة و هي جهات الاتصال، بناء على ذلك سيتم ارسال جهات الاتصال إلى البرنامج.
وأخيراً لابد من التنويه الى أن استخدام أي تطبيق وسيط يطلب من المستخدم الوصول إلى بيانات خاصة مثل فيسبوك، غوغول، تويتر، الخ... لا يستخدم بروتوكول OAuth هو تطبيق غير أمن ولا يجب استخدامه أبدا، اذ أنه مع وجود هذا البروتكول لايوجد أي سبب لتقديم بيانات المصادقة بأي شكل كان.
المصادر:
هنا
هنا