oauth

الإنترنت الآن يختلف عن الإنترنت في سنوات قليلة مضت ، ثورة مواقع الشبكات الإجتماعية Social media باتت من أهم صيحات الإنترنت في الوقت الحالي وخاصة ما اتت به من حجم ضخم في تبادل المعلومات بكافة أنواعها من ملفات وبيانات وصور غيرها، وكي نتحدث عن حجم التبادل بين مستخدمي الإنترنت وبعضهم فلا بد من التطرق في الحديث عن التقنيات التي ساعدت في مد جسور التواصل بين مواقع الإنترنت وبعضها ومن أهم هذه بروتوكولات هي الـ OpenID  و الـ oAuth ، سألقي الضوء في هذا المقال عن الـ oAuth وكيفية عمله وفي مقال قادم سأتحدث عن الـ OpenID

ما هو بروتوكول الـ oAuth ؟

احتصار لكلمة Open Authorization وهو يتيح للمستخدم امكانية مشاركة المحتوى لمواقع أو برامج خارجيه بطريقه سريه وآمنه بدون الحاجه الى ادخال اي بيانات سريه كتسجيل الدخول او عمل حساب جديد او غيره. بدأت هذه التقنية في الظهور مع بداية نوفمبر 2006 وبعدها في أبريل 2007 عن طريق مجموعه صغيره على موقع جوجل اشترك فيها عدد من راغبي وضع معيار جديد للـ Open Standard  حتى ظهرت هذه التقنيه في الأول من أكتوبر 2007.


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

الطريقه الأخرى هي استخدام واحد من البرامج الوسيطه بينك كسمتخدم وبين تويتر كمقدم خدمه مثل tweetdeck  او Gwibber  أو غيره من البرامج المعروفة ، وهذه البرامج مفيده في حالة انك لا تريد فتح المتصفح في كل مره لتحديث الرساله الخاص بك او عمل متابعة لأحدث الرسائل دون لرجوع الى موقع تويتر نفسه، فبإمكانك تحميل مجرد صندوق صغير على سطح المكتب widget  وسيقوم هو باطلاعك على جميع التحديثات.
يأتي هنا السؤال كيف يمكن لهذا البرنامج الوسيط الدخول على حساب تويتر الخاص بك وتحديث الرساله ؟
يتمكن هذا البرنامج من الفيام بهذه العمليه في حالة منح المستخدم التصريح لهذا البرنامج صلاحيات معينه للقيام بمهام بالنيابه عن المستخدم نفسه. دعوني انتقل بكم هذه المره الى مثال حي لأحد البرامج الوسيطه التي تستخدم الـ oAuth في ايصال رسائل المستخدم الى تويتر.

كما نحن متفقون ان هناك ثلاثة أطرف
1) المستخدم  User
2) البرنامج الوسيط  Application  او يطلق عليه Consumer 
3)مقدم الخدمة Service provider

وهذه الرسمه توضح الثلاثة أطرف:

oauth-stackholders

سأقوم أنا من حسابي ibrahimhamdy@ على تويتر بتمثيل دور المستخدم ، وسأقوم باستخدام برنامج  Gwibber Social Client ليقوم بنشر رسائل تويتر مباشرة على تويتر ، وسيكون موقع تويتر هو مقدم الخدمة.

في البداية عند فتح برنامج  Gwibber Social Client   سأقوم باضافة حساب تويتر الخاص بي وسأقوم بالضغط على  Authorize  لمنح البرنامج صلاحيات الدخول على حسابي ، عند الضغط سيقوم البرنامج بالتحميل والدخول على موقع تويتر مباشرة لأقوم بتسجيل الدخول أولا  وفي حالة ان كنت قمت بتسجيل الدخول مسبقاً من خلال المتصفح سيذهب مباشرة إلى شاشة الصلاحية

oauth-gwibber

oauth-gwibber

وكما نلاحظ وجود قائمة بالنقاط التي يمكن البرنامج القيام بها بها بالنيابه عني وقائمة أخرى بما لا يمكن عمله، فعلى سبيل المثال سيتمكن البرنامج بالقيام بقراءة جميع الرسائل من المستخدمين الآخرين ، معرفة من يقوم بمتابعة حسابي مع امكانية عمل متابعه جديده لشخص معين ، تحديث الحساب الخاص بي ، نشر رسائل جديده وأخيراً امكانية الدخول على الرسائل الخاصه بي وعلى النحو الآخر ما لا يستطيع البرنامج القيام به هو عدم معرفة كلمة السر الخاصة بي.

وبعد اتمام دخول اسم المستخدم وكلمة السر ونقوم بالضغط على Authorize App سيكون البرنامج الآن مُصرح له بالدخول على الحساب الخاص بي بالصلاحيات التي تم منحها.

oauth-gwibber

ويمكنني الوصول الى جميع التحديثات الخاص بي على حساب تويتر من خلال برنامج  Gwibber  دون اللجوء الى موقع تويتر

oauth-gwibber

وكذالك يمكنني استخدام Gwibber  في كتابة رساله جديده على تويتر كالمثال الذي قمت بكتابته  "عرب هاردوير http://arabhardware.net تابعوني على تويتر @arabhardware"  وعند الضعط على Send  ومراجعة موقع تويتر من خلال المتصفح سيظهر بالشكل التالي مع ظهور كلمة via Ubuntu  والتي تشير الى استخدام برنامج Gwibber (البرنامج الرسمي من Ubuntu) في كتابة هذه الرسالة    :

oauth-gwibber

الآن اصبحت لدينا الرؤيه واضحة بخصوص عملية الـ Authotization التي يتم منحها لبرنامج وسيط ، كإمكانية تسجيل الدخول على أي موقع مثلا باستخدام حساب الفيس بوك (facebook connect ) الخاص بك بمجرد الضعط على  Grant Access  أو كلمة Allow من الخدمات الأخرى :

oauth-flickr

oauth-facebook

 

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