تنفيذ نوع منح بيانات اعتماد العميل

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

باستخدام نوع منح بيانات اعتماد العميل، يرسل التطبيق بيانات الاعتماد الخاصة به (ومعرف العميل سر العميل) إلى نقطة نهاية في Apigee Edge تم إعدادها لإنشاء رمز دخول. إذا كانت بيانات الاعتماد صالحة، تعرض Edge رمز الدخول إلى تطبيق العميل.

حول هذا الموضوع

يقدم هذا الموضوع وصفًا عامًا لنوع منح بيانات اعتماد عميل OAuth 2.0 كيفية تنفيذ هذا المسار على Apigee Edge.

حالات الاستخدام

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

الأدوار

تحدد الأدوار "الممثلين" التي تشارك في تدفق OAuth. لنلقي نظرة عامة سريعة على أدوار بيانات اعتماد العميل للمساعدة في توضيح مكان توفّر Apigee Edge. للحصول على حول أدوار OAuth 2.0، يمكنك الاطّلاع على مواصفات بروتوكول OAuth 2.0 في مجموعة مهندسي شبكة الإنترنت (IETF).

  • تطبيق العميل: هو التطبيق الذي يحتاج إلى الوصول إلى حماية بيانات المستخدم الموارد. وعادةً، من خلال هذا المسار، يتم تشغيل التطبيق على الخادم بدلاً من تشغيله محليًا على جهاز كمبيوتر محمول أو جهاز آخر.
  • Apigee Edge: في هذا المسار، يكون Apigee Edge هو تفويض OAuth. الخادم. وتتمثل دورها في إنشاء رموز الدخول، والتحقق من صحة رموز الدخول، واجتياز الطلبات الخاصة بالموارد المحمية في خادم الموارد.
  • خادم الموارد: خدمة الخلفية التي تخزِّن البيانات المحمية الذي يحتاج إليه تطبيق العميل للوصول إليه. في حال حماية الخوادم الوكيلة لواجهة برمجة التطبيقات المستضافة على Apigee Edge، ثم Apigee Edge هو خادم الموارد أيضًا.

عيّنة تعليمات برمجية

يمكنك العثور على نسخة كاملة من نموذج من تنفيذ نوع منح بيانات اعتماد العميل على GitHub. راجِع مراجع إضافية أدناه للاطّلاع على روابط تؤدي إلى المزيد من الأمثلة.

مخطط انسيابي

يوضح مخطط التدفق التالي تدفق بيانات اعتماد العميل مع عرض Apigee Edge خادم التفويض. وبشكل عام، فإن Edge هو خادم الموارد في هذا التدفق -- أي، الخوادم الوكيلة لواجهة برمجة التطبيقات هي الموارد المحمية.


الخطوات التي يجب اتّباعها في مسار بيانات اعتماد العميل

في ما يلي ملخّص للخطوات المطلوبة لتنفيذ نوع منح رمز بيانات اعتماد العميل حيث تعمل Apigee Edge كخادم التفويض. تذكر، مع هذا التدفق، أن تطبيق العميل يعرض معرّف العميل وسر العميل، وفي حال كانا صالحَين، تعرض Apigee Edge .

شرط أساسي: يجب تسجيل تطبيق العميل لدى Apigee Edge للحصول على معرف العميل ومفاتيح سر العميل. راجع تسجيل تطبيقات العميل لـ التفاصيل.

1. يطلب العميل رمز الدخول

لتلقّي رمز دخول، يُجري العميل طلب POST من واجهة برمجة التطبيقات إلى Edge مع قيم معرّف العميل. وسر العميل الذي تم الحصول عليه من تطبيق مطوِّر مسجَّل. بالإضافة إلى ذلك، يمكن يجب تمرير report_type=client_certifieds كمعلمة طلب بحث. (ومع ذلك، يمكنك ضبط سياسة OAuthV2 لقبول هذه المعلمة في عنوان الطلب أو نصه -- راجع سياسة OAuthV2 لمعرفة التفاصيل).

مثلاً:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials&client_id=ns4fQc14Zg4hKFCNaSzArVuwszX95X&client_secret=ZIjFyTsNgQNyxI'

ملاحظة: على الرغم من أنّه يمكنك تمرير قيمتَي client_id وclient_secret كطلب بحث. كما هو موضّح أعلاه، من الأفضل تمريرها كسلسلة مشفّرة لعنوان URL base64 في عنوان التفويض. لإجراء ذلك، يجب استخدام أداة أو أداة ترميز base64 لترميز. القيمتين معًا مع نقطتين تفصل بينهما. مثال: aBase64EncodeFunction(clientidvalue:clientsecret). وبالتالي، سيتمّ ترميز المثال أعلاه كما يلي: التالي:

results = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // لاحظ النقطتين الفاصلتين بين القيمتين.

نتيجة ترميز base64 في السلسلة أعلاه هي: bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==

بعد ذلك، قدِّم طلب الرمز المميّز على النحو التالي:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg=='

2. تقوم شبكة Edge بالتحقق من صحة بيانات الاعتماد

تجدر الإشارة إلى أنّه يتم إرسال طلب بيانات من واجهة برمجة التطبيقات إلى نقطة النهاية /accesstoken. تتضمن نقطة النهاية هذه سياسة. المرفق به للتحقق من صحة بيانات اعتماد التطبيق. وهذا يعني أنّ السياسة تقارن المحتوى الذي تم إرساله بالمفاتيح التي أنشأتها في Apigee Edge عند تسجيل التطبيق. إذا كنت ترغب في لمعرفة المزيد من المعلومات حول نقاط نهاية OAuth على Edge، راجع إعداد OAuth. نقاط النهاية والسياسات.

3- تعرض Edge ردًا

إذا كانت بيانات الاعتماد جيدة، ستعرض Edge رمز الوصول إلى العميل. إذا لم يكن الأمر كذلك، فإن الخطأ عاد.

4. يستدعي العميل واجهة برمجة تطبيقات محمية

والآن، باستخدام رمز دخول صالح، يمكن للعميل إجراء اتصالات بواجهة برمجة التطبيقات المحمية. في هذه الدورة، يتم تقديم الطلبات إلى Apigee Edge (الخادم الوكيل)، وتكون شبكة Edge مسؤولة عن التحقق من رمز الدخول قبل تمرير طلب بيانات من واجهة برمجة التطبيقات إلى خادم المورد المستهدف. على سبيل المثال، راجع طلب واجهة برمجة التطبيقات المحمية أدناه.

تهيئة التدفقات والسياسات

بصفته خادم التفويض، يعالج Edge طلبات رموز الدخول. وبصفتك مطور واجهة برمجة التطبيقات، عليك إنشاء خادم وكيل مع مسار مخصّص للتعامل مع طلبات الرموز المميّزة وإضافة سياسة OAuthV2. يشرح هذا القسم كيفية ضبط نقطة النهاية هذه.

إعدادات التدفق المخصّصة

إنّ أسهل طريقة لإظهار كيفية ضبط مسار الخادم الوكيل لواجهة برمجة التطبيقات هي عرض مسار XML. التعريف. في ما يلي مثال على مسار خادم وكيل لواجهة برمجة التطبيقات المصمم لمعالجة طلب رمز الدخول. بالنسبة على سبيل المثال، عندما يأتي طلب وتتطابق لاحقة المسار مع /accesstoken، فإن GetAccessToken يتم تشغيل السياسة. راجع إعداد بروتوكول OAuth نقاط النهاية والسياسات لإلقاء نظرة عامة سريعة على الخطوات اللازمة لإنشاء تدفق مخصص هكذا.

<Flows>
  <Flow name="GetAccessToken">
         <!-- This policy flow is triggered when the URI path suffix
         matches /oauth/accesstoken. Publish this URL to app developers 
         to use when obtaining an access token using an auth code   
         -->
    <Condition>proxy.pathsuffix == "/oauth/accesstoken"</Condition>
    <Request>
        <Step><Name>GetAccessToken</Name></Step>
    </Request>
  </Flow>
</Flows>

ضبط التدفق باستخدام سياسة

يجب إرفاق سياسة بنقطة النهاية، على النحو التالي. راجع إعداد بروتوكول OAuth نقاط النهاية والسياسات لإلقاء نظرة عامة سريعة على الخطوات اللازمة لإضافة سياسة OAuthV2 إلى نقطة نهاية الوكيل.

الحصول على رمز الدخول

يتم ربط هذه السياسة بمسار /accesstoken. إنه يستخدم OAuthV2 مع تحديد عملية GenerateAccessToken.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse/>
</OAuthV2>

طلب واجهة برمجة التطبيقات للحصول على رمز الدخول هو طلب POST ويتضمن رأس تفويض مع مَعلمة base64 المشفّرة client_id + client+secret ومَعلمة طلب البحث grant_type=client_credentials. ويمكن أن تتضمن أيضًا معلمات اختيارية للنطاق والحالة. بالنسبة مثال:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'

إرفاق سياسة تأكيد رمز الدخول

لحماية واجهة برمجة التطبيقات باستخدام أمان OAuth 2.0، عليك إضافة سياسة OAuthV2 مع عملية VerifyAccessToken تتحقّق هذه السياسة من أنّ الطلبات الواردة لديها رمز دخول صالح. إذا كان الرمز المميّز صالحًا، ستعالج شبكة Edge الطلب. وإذا لم تكن صالحة، ستعرض Edge خطأ. بالنسبة الخطوات الأساسية، فراجع التحقق من رموز الدخول.

<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken">
    <DisplayName>VerifyAccessToken</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>VerifyAccessToken</Operation>
    <SupportedGrantTypes/>
    <GenerateResponse enabled="true"/>
    <Tokens/>
</OAuthV2>

طلب واجهة برمجة التطبيقات المحمية

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

$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \
  http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282 

راجع أيضًا إرسال إذن الرمز المميّز.

مراجع إضافية

  • توفّر Apigee تدريبًا عبر الإنترنت لمطوّري واجهات برمجة التطبيقات، بما في ذلك دورة حول واجهة برمجة التطبيقات للأمان، بما في ذلك بروتوكول OAuth.
  • سياسة OAuthV2 -- تحتوي على أمثلة كثيرة توضح كيفية تقديم طلبات إلى خادم التفويض وكيفية تهيئة سياسة OAuthV2.