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

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

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

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

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

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

  • الطلب رمز دخول: نوع منح كلمة المرور: يوضح لك كيفية إنشاء طلب رمز مميز وإعداد سياسة OAuthV2 لنوع منح كلمة المرور، وكيفية ضبط نقطة نهاية للسياسة في الحافة.
  • oauth-Verifyate-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 للتجعيد لإنشاء عنوان مصادقة أساسية بترميز 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> أو &lt;PassWord&gt; والعناصر، ويمكنك استردادها من متغيرات التدفق التي باستخدام سياسة PermissionVariables. للحصول على معلومات مرجعية تفصيلية حول هذه السياسة راجِع سياسة 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