![](https://developers.google.cn/static/gdata/articles/support/oauth_gdata/oauthLogo.png?authuser=6&hl=ar)
أيلول (سبتمبر) 2008
المقدمة
هذا وقت رائع لمطوّري البرامج. بدأنا نرى عددًا من المعايير المفتوحة التي يتم اعتمادها عبر الويب، وكما تعلمون، فإن Google كانت دائمًا من كبار المعجبين بالمعايير وتدعم منتدى البرامج مفتوحة المصدر.
ومؤخرًا، اعتمدت جميع واجهات برمجة التطبيقات لبيانات Google دعم بروتوكول OAuth ، وهو بروتوكول مفتوح يهدف إلى توحيد الطريقة التي يتم من خلالها الوصول إلى بيانات المستخدم الخاصة على أجهزة سطح المكتب وتطبيقات الويب. يوفر بروتوكول OAuth وسيلة لإجراء مصادقة واجهة برمجة التطبيقات بطريقة بسيطة وآمنة. بصفتنا المبرمجين، سيتم تعليمنا كيفية إعادة استخدام الرموز متى أمكن. سيساعد OAuth مطوري البرامج في تقليل عدد الرموز المكررة التي يكتبونها وتسهيل إنشاء الأدوات التي تعمل مع خدمات متعددة من مجموعة متنوعة من مقدمي الخدمة المختلفين.
الجمهور
تفترض هذه المقالة أنك على دراية بواحدة أو أكثر من Google Data APIs وليس بالضرورة المفاهيم التي تستند إليها OAuth. وإذا كنت بصدد البدء، أو كنت مهتمًا فقط باستخدام OAuth، لا مزيد من البحث. ستمنحك هذه المقالة أساسًا أساسيًا للمفاهيم. سأناقش أيضًا تفاصيل تنفيذ بروتوكول OAuth من Google.
هذا المستند مخصّص أيضًا لمطوّري البرامج الذين لديهم دراية باستخدام AuthSub، خاصةً في وضع التسجيل باستخدام الأمان المحسّن. وبينما نستمر في ذلك، سنحاول إبراز أوجه التشابه والاختلافات بين البروتوكولين. إذا كانت لديك تطبيقات تستخدم AuthSub، يمكنك استخدام هذه المعلومات للترحيل إلى OAuth، وهو بروتوكول حديث أكثر انفتاحًا.
مصطلحات بسيطة
يهدف فهم بروتوكول OAuth إلى فهم مصطلحاته. تعتمد مواصفات OAuth ووثائق مصادقة OAuth لتطبيقات الويب من Google إلى حد كبير على تعريفات معينة، لذا دعنا نوضح ما يعنيه كل ذلك في سياق تنفيذ OAuth من Google.
- "رقصة OAuth"
مصطلحي غير الرسمي لوصف عملية مصادقة/مصادقة OAuth الكاملة.
- (OAuth) طلب رمز مميز
رمز مميز أولي يخبر Google بأن تطبيقك يطلب الدخول إلى إحدى واجهات برمجة تطبيقات بيانات Google. الخطوة الثانية في رقص OAuth هي أن يمنح المستخدم إذن الوصول إلى بياناته يدويًا. إذا نجحت هذه الخطوة، يصبح الرمز المميز للطلب معتمدًا.
- (OAuth) رمز الدخول
الخطوة الأخيرة للرقص هي استبدال رمز الطلب المميز برمز دخول. بعد اشتمال التطبيق على هذا الرمز المميز، لن يحتاج المستخدم إلى إجراء رقصة OAuth مرة أخرى ما لم يتم إبطال الرمز المميز.
مشابهة لـ AuthSub:
يتطابق رمز الدخول عبر OAuth مع الرمز المميز لجلسة AuthSub الآمنة. - (OAuth) نقاط النهاية
هذه هي معرّفات الموارد المنتظمة (URI) المطلوبة لمصادقة تطبيق والحصول على رمز دخول. هناك ثلاث وحدات إجمالية - واحدة لكل خطوة من عملية OAuth. نقاط نهاية OAuth في Google هي:
الحصول على رمز مميز للطلب: https://www.google.com/accounts/OAuthGetRequestToken
مصادقة الرمز المميز للطلب: https://www.google.com/accounts/OAuthAuthorizeToken
الترقية إلى رمز دخول: https://www.google.com/accounts/OAuthGetAccessToken
مماثلة رمز AuthSub:
يُعدّ تبادل رمز مميّز لطلب مميّز لرمز دخول مميّز أمرًا مشابهًا لترقية رمز مميّز AuthSub صالح للاستخدام لمرة واحدة إلى رمز مميّز قديم لجلسات في الساعةhttps://www.google.com/accounts/AuthSubRequestToken
وhttps://www.google.com/accounts/AuthSubSessionToken
على التوالي. الفرق هو أن AuthSub لا يتضمن مفهوم الرمز المميز الأولي للطلب. وبدلاً من ذلك، يبدأ المستخدم عملية الرمز المميز من صفحة التفويضAuthSubRequestToken
. - مقدم خدمة (OAuth)
في حالة واجهات برمجة التطبيقات لبيانات Google، يكون مقدم الخدمة هذا هو Google. بوجه عام، يتم استخدام مقدم الخدمة لوصف موقع الويب أو خدمة الويب التي توفر نقاط نهاية OAuth. مثال آخر على مقدم خدمة OAuth هو MySpace.
- (OAuth) المستهلك
البرنامج الذي يطلب الإذن للوصول إلى بيانات المستخدم (أي تطبيقك). يتميز بروتوكول OAuth بالمرونة من حيث أنه يتيح لمجموعة متنوعة من أنواع البرامج المختلفة (الويب والمثبّت وسطح المكتب والجوّال).
ملاحظة: على الرغم من أنّ بروتوكول OAuth يتوافق مع حالة استخدام التطبيق المتوافق مع أجهزة سطح المكتب/التطبيقات المثبّتة، لا يتوافق Google إلا مع بروتوكول OAuth لتطبيقات الويب.
البدء
تسجيل
هناك قدر صغير من الإعداد قبل أن تتمكن من البدء في استخدام OAuth مع واجهات برمجة التطبيقات لبيانات Google. نظرًا لأن جميع طلبات OAuth يجب أن تكون موقعة رقميًا، فستحتاج أولاً إلى تسجيل نطاقك وتحميل شهادة عامة إلى Google. اطلع على التسجيل للتطبيقات المستندة إلى الويب وإنشاء مفاتيح وشهادات للاستخدام مع الوضع المسجل لمزيد من المعلومات حول كيفية إجراء ذلك.
توقيع الطلبات
بعد تسجيل نطاقك، ستصبح مستعدًا لبدء توقيع الطلبات. إن أحد أصعب مفاهيم OAuth هو كيفية إنشاء oauth_signature
وفكرة السلسلة الأساسية للتوقيع بشكل صحيح. السلسلة الأساسية هي البيانات التي توقِّعها باستخدام مفتاحك الخاص (باستخدام RSA_SHA1
). وتكون النتيجة هي القيمة التي تضبطها لـ oauth_signature
.
مثال على طلب
GET
قائمة تقاويم Google للمستخدم في http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
تنسيق السلسلة الأساسية | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
مثال على سلسلة أساسية | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
مثال على طلب HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
ملاحظة: يُقصد بذلك التمثيل فقط. ستكون oauth_signature
أطول بكثير.
ملاحظات على السلسلة الأساسية:
- يتم ترتيب مَعلمة طلب البحث
orderby=starttime
مع بقية المَعلماتoauth_*
في ترتيب قيم وحدات البايت. - هذه السلسلة أيضًا لا تحتوي على الحرف "?".
- لا يحتوي الجزء
base-http-request-url
إلا على عنوان URL الأساسي المشفر لعنوان URL:http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
. - تم ترميز
oauth_token
مرتين باستخدام عنوان url.
ملاحظات على عنوان Authorization
:
- لا يؤثر ترتيب معلَمات
oauth_*
في عنوانAuthorization
. - لا يتضمّن الرأس
orderby=starttime
كما فعلت السلسلة الأساسية. يتم الاحتفاظ بمعلمة طلب البحث هذه كجزء من عنوان URL للطلب.
لمزيد من المعلومات حول توقيع الطلبات باستخدام OAuth، اطلع على توقيع طلبات OAuth.
الفرق عن AuthSub:
للمقارنة: في ما يلي مثال مشابه لاستخدام AuthSub آمن:
تنسيق السلسلة الأساسية | base_string = http-method http-request-URL timestamp nonce |
---|---|
مثال على سلسلة أساسية |
GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
مثال على طلب HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
لمزيد من المعلومات حول توقيع الطلبات باستخدام AuthSub، يُرجى الاطِّلاع على توقيع طلبات AuthSub.
أداة ساحة بروتوكول OAuth
الغرض
اقترح بعض المستخدمين منح بروتوكول OAuth منحنى تعليميًا عاليًا. أوافق على مقارنة واجهات برمجة تطبيقات المصادقة الأخرى من Google. ستكون ميزة OAuth واضحة عند توسيع تطبيقك لاستخدام خدمات أخرى (بخلاف Google). تبدو كتابة شفرة مصادقة واحدة، تعمل عبر مختلف مقدمي الخدمة وواجهات برمجة التطبيقات لها، على ما يرام. وستشكر نفسك لاحقًا على تعلُّم البروتوكول الآن.
ساحة بروتوكول OAuth هي أداة أنشأتها لمساعدة مطوّري البرامج في معالجة مشاكل OAuth. يمكنك استخدام "مساحة المرح" للمساعدة في تصحيح الأخطاء والتحقق من التنفيذ أو تجربة واجهات برمجة التطبيقات لبيانات Google.
ما هي وظيفة هذا الخيار؟
- يوضح تدفق مصادقة OAuth: جلب رمز طلب مميز، وتفويض الرمز المميز، وترقيته إلى رمز دخول.
- يعرض سلسلة قاعدة التوقيع الصحيحة لكل طلب.
- يعرض عنوان
Authorization
الصحيح لكل طلب. - يوضح كيفية استخدام
oauth_token
للتفاعل مع خلاصة بيانات Google تمت مصادقتها. يمكنكGET
/POST
/PUT
/DELETE
البيانات. - عرض خلاصة تمت مصادقتها مباشرةً في المتصفح.
- يسمح لك باختبار
oauth_consumer_key
(نطاقك المسجل) ومفتاحك الخاص. - تعرَّف على خدمات خلاصة بيانات Google المتوفّرة لجهاز
oauth_token
.
تشغيل العرض التوضيحي
الخطوة 1: اختيار نطاقاتكأولاً، حدّد واجهات برمجة التطبيقات التي ترغب في استخدامها عن طريق اختيار واحد أو أكثر من النطاقات. في هذا العرض التوضيحي، أطلب رمزًا مميزًا يعمل مع Blogger وجهات اتصال Google. التشابه مع AuthSub: |
![]() |
الخطوة 2: تعديل معلمات OAuth وإعداداتهفي الوقت الحالي، لا تعدِّل أي إعدادات في المربع "تعديل معلمات OAuth". وفي وقت لاحق، يمكنك إجراء الاختبار باستخدام مفتاحك الخاص عن طريق تغيير
ملاحظة: الحقلان بالإضافة إلى الفرق عن AuthSub: |
![]() |
الخطوة 3-5: الحصول على رمز الدخولهناك ثلاث خطوات للحصول على رمز دخول OAuth مميز. تتمثل الخطوة الأولى في استرداد رمز الطلب المميز. يتيح هذا لمحرك البحث Google معرفة أن تطبيقك يبدأ رقصة OAuth. أولاً، انقر على الزر "طلب رمز مميز" في مربع "الحصول على الرمز المميز". ستتم تعبئة بعض الحقول بالبيانات.
|
![]() ![]() |
بعد ذلك، انقر على الزر "تفويض" في المربع "الحصول على الرمز المميز". في صفحة التفويض هذه، انقر على الزر "منح الوصول" لتفويض الرمز المميز للطلب وستتم إعادة توجيهك مرة أخرى إلى "مساحة تخزين بروتوكول OAuth". تشابه مع AuthSub: الفرق عن AuthSub: نصيحة: يُفضل تحديد عنوان URL |
![]() |
وأخيرًا، انقر على الزر "رمز الدخول" في المربع "الحصول على الرمز المميز". يعمل هذا الإجراء على ترقية رمز الطلب المميز (كما هو موضّح من خلال علامة "رمز الدخول") الحمراء. إذا كنت تريد جلب رمز مميز جديد، فانقر على "البدء من جديد" لإعادة إجراء رقصة OAuth. والآن يمكننا تنفيذ إجراء مثير للاهتمام! |
![]() |
استخدام رمز الدخول
أنت الآن مستعد لطلب البحث عن الخلاصات أو إدراج البيانات أو تعديلها أو حذفها. الرجاء توخي الحذر عند تنفيذ طرق HTTP الثلاث هذه أثناء التعامل مع بياناتك الفعلية!
ملاحظة: للاطّلاع على الخلاصات المتاحة لرمز الدخول، انقر على الزر "الخلاصات المتوفّرة".
في ما يلي مثال لطلب بحث: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3
![](https://developers.google.cn/static/gdata/articles/support/oauth_gdata/blogger_example.png?authuser=6&hl=ar)
لا يعرض هذا المثال أكثر من ثلاث مشاركات في مدونة معينة. يمكنك أيضًا عرض الخلاصة/إدخال الإدخال الذي تم عرضه مباشرة في متصفحك من خلال النقر على الرابط "عرض في المتصفح" أسفل المنطقة المحددة بالبنية.
مثال: كيفية تعديل مشاركة
- حدِّد موقع العنصر
<link>
الذي يتضمّن rel="edit" في المشاركة التي تريد تعديلها. ومن المفترض أن يظهر الرقم على النحو التالي:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
الصق عنوان URL لـ href في إدخال "إدخال خلاصة بيانات Google".
- انسخ ملف XML للإدخال الحالي من خلال النقر على "عرض عادي" أعلى اللوحة المميزة بالبنية. انسخ نص الاستجابة فقط، وليس الرؤوس.
- تغيير القائمة المنسدلة لطريقة HTTP إلى
PUT
- انقر على "إدخال بيانات المشاركة" أسفل القائمة المنسدلة والصِق XML في
<entry>
في النافذة المنبثقة. - انقر على الزر "تنفيذ".
سيستجيب الخادم باستخدام 200 OK
.
نصيحة: بدلاً من نسخ رابط edit
يدويًا، ألغِ تحديد مربع الاختيار "تظليل البنية؟". بعد إجراء طلب بحث، ستتمكن من النقر على الروابط ضمن نصوص استجابة XML.
الخاتمة
تساعد التقنيات، مثل بروتوكول النشر AtomPub/Atom (البروتوكول الأساسي لـ Google Data APIs) وOAuth في تعزيز الويب. وكلما ازداد عدد المواقع التي تتبنّى هذه المعايير، أصبحنا نطوّر المواقع باستمرار. فجأة يصبح إنشاء تطبيق قاتل أقل صعوبة.
إذا كانت لديك أي أسئلة أو تعليقات على ساحة بروتوكول OAuth أو كنت تستخدم OAuth مع Google APIs، يُرجى زيارتنا في منتدى دعم G Suite APIs وMarketplace API.