إتاحة الوصول إلى رموز OAuth 2.0 المميزة حسب رقم تعريف المستخدم ورقم تعريف التطبيق

Edge for Private Cloud‏ 4.17.01

يوضّح هذا المستند طريقة تفعيل استرداد رموز الدخول إلى OAuth 2.0 وإبطالها باستخدام رقم تعريف المستخدم أو رقم تعريف التطبيق أو كليهما.

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

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

تلقائيًا، عندما ينشئ Edge رمز دخول عبر بروتوكول OAuth 2.0، يكون التنسيق على النحو التالي:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

يُرجى ملاحظة ما يلي:

  • يحتوي الحقل application_name على المعرّف الفريد العالمي للتطبيق المرتبط بالرمز المميّز. في حال تفعيل استرداد رموز الوصول لبروتوكول OAuth 2.0 وإبطالها حسب معرّف التطبيق، هذا هو معرّف التطبيق الذي تستخدمه.
  • يحتوي حقل access_token على قيمة رمز دخول OAuth 2.0.

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

رقم تعريف المستخدم النهائي هو السلسلة التي يستخدمها Edge كسمة تعريف المطوّر، وليس عنوان البريد الإلكتروني للمطوّر. يمكنك تحديد رقم تعريف المطوّر من عنوان بريده الإلكتروني باستخدام طلب البيانات من واجهة برمجة التطبيقات Developer API.

بعد ضبط Edge لتضمين رقم تعريف المستخدم النهائي في الرمز المميّز، يتم تضمينه في الحقل app_enduser، كما هو موضّح أدناه:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "app_enduser" : "6ZG094fgnjNf02EK",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

واجهات برمجة التطبيقات لاسترداد رموز الوصول إلى OAuth 2.0 وإبطالها حسب معرّف المستخدم ومعرّف التطبيق

يمكنك استخدام واجهات برمجة التطبيقات التالية للوصول إلى رموز OAuth المميزة حسب رقم تعريف المستخدم أو رقم تعريف التطبيق أو كليهما:

الإجراء المُتّبع لتفعيل إمكانية الوصول إلى الرمز المميّز

اتّبِع الإجراء التالي لتفعيل استرداد رموز الوصول إلى OAuth 2.0 وإبطالها باستخدام رقم تعريف المستخدم النهائي ورقم تعريف التطبيق.

الخطوة 1: تفعيل إمكانية استخدام الرموز المميّزة للوصول إلى مؤسسة

يجب تفعيل إمكانية الوصول إلى الرموز المميّزة لكل مؤسسة بشكل منفصل. استخدِم واجهة برمجة التطبيقات PUT API أدناه لكل مؤسسة تريد تفعيل استرداد رموز الوصول إلى OAuth 2.0 وإبطالها حسب رقم تعريف المستخدم النهائي أو رقم تعريف التطبيق.

يجب أن يكون المستخدم الذي يجري المكالمة التالية في الدور orgadmin أو opsadmin للمؤسسة. استبدِل القيم في {curly braces} بالقيم الخاصة بمؤسستك:

> curl -H "Content-type:text/xml" -X POST \
  https://<ms-ip>:8080/v1/organizations/{org_name} \
  -d '<Organization name="{org_name}">
      <Properties>
        <Property name="features.isOAuthRevokeEnabled">true</Property>
        <Property name="features.isOAuth2TokenSearchEnabled">true</Property>
      </Properties>
    </Organization>' \ 
  -u {userEmail}:{mypassword}

الخطوة 2: ضبط الأذونات لدور مسؤول العمليات في المؤسسة

يجب منح أدوار orgadmin وopsadmin فقط في المؤسسة أذونات لاسترداد (HTTP GET) وإبطال (HTTP PUT) رموز OAuth 2.0 المميزة استنادًا إلى معرّف المستخدم أو معرّف التطبيق. للتحكّم في الوصول، اضبط أذونات get وput على مورد ‎ /oauth2 ل مؤسسة. يحتوي هذا المرجع على عنوان URL بالشكل التالي:

https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2

من المفترض أن يكون دور orgadmin قد حصل على الأذونات اللازمة. بالنسبة إلى دور opsadmin لمورد ‎ /oauth2، يجب أن تبدو الأذونات على النحو التالي:

<ResourcePermission path="/oauth2">
    <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
    </Permissions>
</ResourcePermission>

يمكنك استخدام طلب الحصول على إذن لواجهة برمجة تطبيقات لمورد واحد لمعرفة الأدوار التي لديها أذونات للمورد /oauth2.

استنادًا إلى الاستجابة، يمكنك استخدام طلبَي واجهة برمجة التطبيقات إضافة أذونات للمورد إلى دور و حذف إذن للمورد لإجراء أي تعديلات ضرورية على أذونات المورد /oauth2.

استخدِم الأمر cURL التالي لمنح دور opsadmin أذونات get وput لمورد /oauth2. استبدِل القيم في {curly braces} بالقيم الخاصة بالمؤسسة على النحو التالي:

> curl -X POST -H 'Content-type:application/xml' \
  http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u {USEREMAIL}:{PWD} 

استخدِم الأمر cURL التالي لإبطال أذونات get وput لمورد /oauth2 من الأدوار غير orgadmin وopsadmin. استبدِل القيم في {curly braces} بالقيم الخاصة بالمؤسسة على النحو التالي:

> curl -X DELETE -H 'Content-type:application/xml' \
  http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u {USEREMAIL}:{PWD} 

الخطوة 3: ضبط سمة oauth_max_search_limit

تأكَّد من ضبط السمة conf_keymanagement_oauth_max_search_limit في الملف /opt/apigee/customer/application/management-server.properties على 100:

conf_keymanagement_oauth_max_search_limit = 100

إذا لم يكن هذا الملف متوفّرًا، أنشِئه.

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

في عملية التثبيت الجديدة، من المفترض أن يكون قد تم ضبط السمة على 100. إذا كان عليك تغيير قيمة لهذه السمة، عليك إعادة تشغيل "خادم الإدارة" و"معالج الرسائل" باستخدام أوامر التالية:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

الخطوة 4: ضبط سياسة OAuth 2.0 التي تنشئ الرموز المميّزة لتضمين رقم تعريف المستخدم النهائي

اضبط سياسة OAuth 2.0 المستخدَمة لإنشاء رموز الوصول لتضمين معرّف المستخدم النهائي في الرمز المميّز. من خلال تضمين أرقام تعريف المستخدمين النهائيين في رمز الوصول، يمكنك استرداد الرموز وإبطالها باستخدام رقم التعريف.

لضبط السياسة من أجل تضمين رقم تعريف مستخدم نهائي في رمز الدخول، يجب أن يشتمل الطلب الذي يؤدي إلى إنشاء رمز الدخول على رقم تعريف المستخدم النهائي ويجب تحديد متغيّر الإدخال الذي يحتوي على رقم تعريف المستخدم النهائي.

تُنشئ سياسة OAuth 2.0 أدناه، المُسماة GenerateAccessTokenClient، رمزًا مميزًا لوصول بروتوكول OAuth 2.0. يُرجى ملاحظة إضافة العلامة <AppEndUser> بخط عريض التي تحدِّد المتغيّر الذي يحتوي على معرّف المستخدم النهائي:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
    <DisplayName>OAuth 2.0.0 1</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>GenerateAccessToken</Operation>
    <SupportedGrantTypes>
         <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
    <GrantType>request.queryparam.grant_type</GrantType> 
    <AppEndUser>request.header.appuserID</AppEndUser> 
    <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

يمكنك بعد ذلك استخدام الأمر cURL التالي لإنشاء رمز الوصول إلى بروتوكول OAuth 2.0، مع تمرير رقم تعريف المستخدم كعنوان appuserID:

> curl -H "appuserID:6ZG094fgnjNf02EK" \
https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \
  -X POST \
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'

في هذا المثال، يتم تمرير appuserID كعنوان طلب. يمكنك إرسال المعلومات كجزء من طلب بعدة طرق. على سبيل المثال، يمكنك بدلاً من ذلك إجراء ما يلي:

  • استخدِم متغيّر مَعلمة نموذج: request.formparam.appuserID
  • استخدام متغيّر تدفق يوفّر رقم تعريف المستخدم النهائي