أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X. info
يُستخدم نوع منح كلمة مرور مالك المورد (أو "كلمة المرور") في الغالب في الحالات التي يكون فيها التطبيق موثوقًا به إلى حد كبير. في هذا الإعداد، يقدّم المستخدم بيانات اعتماد خادم الموارد (اسم المستخدم/كلمة المرور) إلى تطبيق العميل، الذي يرسلها في طلب رمز دخول إلى Apigee Edge. يتحقّق خادم الهوية من بيانات الاعتماد، وإذا كانت صالحة، ينتقل Edge إلى إنشاء رمز دخول وإعادته إلى التطبيق.
حول هذا الموضوع
يقدّم هذا الموضوع وصفًا عامًا ونظرة عامة على مسار نوع منح كلمة مرور مالك المورد في بروتوكول OAuth 2.0، ويناقش كيفية تنفيذ هذا المسار على Apigee Edge.
أمثلة قد تكون مفيدة
- طلب رمز دخول: نوع منح كلمة المرور: يوضّح لك كيفية إنشاء طلب رمز، وضبط سياسة OAuthV2 لنوع منح كلمة المرور، وكيفية ضبط نقطة نهاية للسياسة في Edge.
- oauth-validate-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 إلى التأكّد من أنّ تطبيق العميل الذي يقدّم الطلب هو تطبيق صالح وموثوق به. إحدى طرق إجراء ذلك هي استخدام مصادقة مفتاح واجهة برمجة التطبيقات في طلب بيانات من واجهة برمجة التطبيقات. في بعض الحالات، قد تحتاج إلى التحقّق من كل من مفتاح العميل والسر. هناك نموذج وكيل يوضّح هذه الطريقة البديلة في مستودع api-platform-samples على GitHub.
4- يعالج Edge بيانات اعتماد تسجيل الدخول
بعد التحقّق من تطبيق العميل، يمكنك استخدام سياسة "طلب الخدمة" أو سياسة JavaScript لاستدعاء خدمة إدارة الهوية، وإرسال بيانات اعتماد المستخدم. على سبيل المثال، يمكن أن تكون خدمة LDAP أو أي خدمة تريد استخدامها للتحقّق من بيانات الاعتماد. لمعرفة التفاصيل حول هاتَين السياسَتين، يُرجى الاطّلاع على سياسة "استخراج المتغيّرات" وسياسة JavaScript.
إذا تحقّقت خدمة إدارة الهوية من بيانات الاعتماد وعرضت استجابة 200، سيواصل Edge معالجة الطلب، وإلا سيتوقّف Edge عن المعالجة ويعرض خطأ على تطبيق العميل.
5- يتم تنفيذ سياسة OAuthV2
إذا كانت بيانات الاعتماد صالحة، تكون خطوة المعالجة التالية هي تنفيذ سياسة OAuthV2 تم ضبطها لنوع منح كلمة المرور. في ما يلي مثال: العنصران <UserName> و <PassWord> مطلوبان، ويمكنك استردادهما من متغيّرات المسار التي تم حفظها باستخدام سياسة ExtractVariables. للحصول على معلومات مرجعية تفصيلية حول هذه السياسة، يُرجى الاطّلاع على سياسة 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 مسؤولاً عن التحقّق من رمز الدخول قبل تمرير طلب بيانات من واجهة برمجة التطبيقات إلى خادم الموارد المستهدَف. يتم تمرير رموز الدخول في عنوان Authorization. على سبيل المثال:
$ curl -H "Authorization: Bearer I6daIgMSiUgYX1K2qgQWPi37ztS6 " http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282