تنفيذ نوع منح كلمة المرور

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

يُستخدم نوع منح كلمة مرور مالك المورد (أو "password") غالبًا في الحالات التي يكون فيها التطبيق موثوقًا به بشكل كبير. في هذه الإعدادات، يقدّم المستخدم بيانات اعتماد خادم الموارد (اسم المستخدم/كلمة المرور) إلى تطبيق العميل، ما يرسلها في طلب رمز الدخول إلى Apigee Edge. يتحقق خادم الهوية من بيانات الاعتماد، وإذا كانت صالحة، يواصل Edge إنشاء رمز الدخول وإعادته إلى التطبيق.

معلومات عن هذا الموضوع

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

أمثلة قد تكون مفيدة لك

  • طلب رمز وصول: نوع منح كلمة المرور: يعرض لك كيفية إنشاء طلب رمز مميّز، وضبط سياسة OAuthV2 لنوع منح كلمة المرور، وكيفية إعداد نقطة نهاية للسياسة في Edge.
  • oauth-valid-key-secret: نموذج خادم وكيل في GitHub يمكنك نشره على Edge وتجربته. وهو مثال شامل يعرض نوع منح كلمة المرور. ويوضّح هذا الإجراء أفضل الممارسات، ألا وهي مصادقة بيانات اعتماد تطبيق العميل (المفتاح أو الرمز السري) قبل إرسال بيانات اعتماد المستخدم إلى موفِّر الهوية.

حملة فيديو

الفيديو: شاهِد هذا الفيديو حول تطبيق نوع منح كلمة المرور.

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

نوع المنح هذا مخصّص للتطبيقات الحاصلة على امتياز أو التطبيقات الموثوق بها بدرجة كبيرة لأنّ المستخدم مطالب بمنح بيانات اعتماد خادم الموارد للتطبيق. ويوفّر التطبيق عادةً شاشة تسجيل دخول حيث يُدخِل المستخدم بيانات الاعتماد.

مخطط التدفق

يوضِّح مخطّط التدفق التالي مسار نوع منح كلمة مرور مالك المورد مع استخدام Apigee Edge كخادم التفويض.

ملاحظة: للاطّلاع على نسخة أكبر من هذا الرسم البياني، انقر بزر الماوس الأيمن عليه وافتحه في علامة تبويب جديدة أو احفظه وافتحه في عارض صور.

الخطوات في مسار نوع منح كلمة المرور

في ما يلي ملخص للخطوات المطلوبة لتنفيذ نوع منح كلمة المرور حيث يعمل Apigee Edge كخادم تفويض.

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

1- يبدأ المستخدم المسار ويُدخل بيانات الاعتماد.

عندما يحتاج التطبيق إلى الوصول إلى موارد محمية للمستخدم (على سبيل المثال، عندما ينقر المستخدم على زر في التطبيق)، تتم إعادة توجيه المستخدم إلى نموذج تسجيل الدخول.

2. يطلب التطبيق رمز دخول من Apigee Edge.

يرسل التطبيق طلب رمز الدخول، بما في ذلك بيانات اعتماد المستخدم، إلى نقطة نهاية GenerateAccessToken في Apigee Edge.

إليك نموذج طلب POST، والذي يتضمن المعلمات المطلوبة لهذا النوع من المنح:

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

بدلاً من ذلك، يمكن تنفيذ هذا الأمر على النحو التالي، باستخدام الخيار -u من أجل curl لإنشاء عنوان المصادقة الأساسية بترميز base64 لك.

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

(يجب أن يكون كل أمر من هذه الأوامر في سطر واحد).

يتم تضمين بيانات اعتماد المستخدم في مَعلمات النموذج، بينما يتم ترميز بيانات اعتماد العميل في عنوان مصادقة HTTP الأساسية. للحصول على وصف تفصيلي لطلب البيانات من واجهة برمجة التطبيقات هذا، بما في ذلك تفاصيل حول عنوان المصادقة الأساسية المطلوب، راجِع قسم "منح كلمة المرور" في "طلب رموز الدخول ورموز التفويض".

3. يتحقّق Edge من صحة تطبيق العميل

قبل إرسال اسم المستخدم وكلمة المرور الخاصَّين بالمستخدم إلى موفِّر هوية، يجب أن يعرف Edge أنّ تطبيق العميل الذي يرسل الطلب هو تطبيق صالح وموثوق به. وتتمثل إحدى الطرق لإجراء ذلك في استخدام مصادقة مفتاح واجهة برمجة التطبيقات عند طلب البيانات من واجهة برمجة التطبيقات. وفي بعض الحالات، قد تحتاج إلى التحقّق من صحة كل من مفتاح العميل والمفتاح السرّي. يتوفّر نموذج خادم وكيل يوضِّح هذه التقنية العامة في مستودع نماذج واجهة برمجة التطبيقات على GitHub.

4. يعالج Edge بيانات اعتماد تسجيل الدخول

بعد التحقّق من صحة تطبيق العميل، يمكنك استخدام "وسيلة شرح الخدمة" أو سياسة JavaScript لطلب خدمة تحديد الهوية وإرسال بيانات اعتماد المستخدم. على سبيل المثال، قد تكون إحدى خدمات LDAP أو أي خدمة تريد استخدامها للتحقّق من بيانات الاعتماد. لمعرفة تفاصيل عن هذه السياسات، يمكنك الاطّلاع على سياسة استخراج المتغيّرات وسياسة JavaScript.

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

5. يتم تنفيذ سياسة OAuthV2

إذا كانت بيانات الاعتماد صالحة، تتمثل خطوة المعالجة التالية في تنفيذ سياسة OAuthV2 التي تم ضبطها لنوع منح كلمة المرور. إليك مثالاً. يكون العنصران <UserName> و<PassWord> مطلوبًا، ويمكنك استردادهما من متغيّرات التدفق التي تم حفظها من خلال سياسة استخراج المتغيرات. للحصول على معلومات مرجعية تفصيلية حول هذه السياسة، راجِع سياسة OAuthV2.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>360000000</ExpiresIn> 
  <SupportedGrantTypes> 
     <GrantType>password</GrantType> 
  </SupportedGrantTypes> 
  <GrantType>request.queryparam.grant_type</GrantType> 
  <UserName>login</UserName>
  <PassWord>password</PassWord>
  <GenerateResponse/> 
</OAuthV2>

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

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799",
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "0",
    "refresh_count": "0"
}

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

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

$ curl -H "Authorization: Bearer I6daIgMSiUgYX1K2qgQWPi37ztS6
" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282