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

الإصدار 4.16.09 من Edge for Private Cloud

يوضّح هذا المستند كيفية تفعيل استرداد رموز الوصول المميزة لبروتوكول 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 على المعرّف الفريد العالمي (UUID) للتطبيق المرتبط بالرمز المميّز. في حال تفعيل استرداد وإبطال رموز الوصول المميزة لبروتوكول OAuth 2.0 حسب رقم تعريف التطبيق، هذا هو رقم تعريف التطبيق الذي تستخدمه.
  • يحتوي الحقل access_token على قيمة رمز الدخول عبر بروتوكول OAuth 2.0.

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

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

بعد ضبط 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 أدناه لكل مؤسسة تريد تفعيل استرداد وإبطال رموز الدخول المميزة لبروتوكول OAuth 2.0 فيها حسب رقم تعريف المستخدم النهائي أو رقم تعريف التطبيق.

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

> 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: ضبط الأذونات لدور opsadmin في المؤسسة

يجب منح دورَي 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>

يمكنك استخدام طلب بيانات من واجهة برمجة التطبيقات Get Permission for a Single Resource لمعرفة الأدوار التي لديها أذونات لمورد ‎/oauth2.

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

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

> 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. استبدِل القيم الواردة بين {أقواس معقوفة} بالقيم الخاصة بمؤسستك:

> 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 في الملف /<inst_dir>/apigee/customer/application/management-server.properties على 100:

conf_keymanagement_oauth_max_search_limit = 100

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

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

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

> /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-management-server restart
> /<inst_rt>/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
  • استخدام متغيّر مسار يوفّر رقم تعريف المستخدم النهائي