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

Edge for Private Cloud ‏v4.18.05

يوضّح هذا المستند طريقة تفعيل استرداد رموز الدخول إلى 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 كسمة تعريف المطوّر، وليس عنوان البريد الإلكتروني للمطوّر. يمكنك تحديد رقم تعريف المطوّر من عنوان بريده الإلكتروني باستخدام طلب البيانات من واجهة برمجة التطبيقات 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 للمؤسسة. استبدِل values بقيَمك الخاصة بمؤسستك:

curl -H "Content-type:text/xml" -X POST \
  https://management_server_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 USER_EMAIL:PASSWORD

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

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

https://management_server_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. استبدِل values بالقيم الخاصة بمؤسستك:

curl -X POST -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u USEREMAIL:PASSWORD

استخدِم الأمر curl التالي لإبطال أذونات get وput لمورد /oauth2 من الأدوار غير orgadmin وopsadmin. استبدِل values بالقيم الخاصة بمؤسستك:

curl -X DELETE -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u USEREMAIL:PASSWORD

الخطوة 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
  • استخدام متغيّر تدفق يوفّر رقم تعريف المستخدم النهائي