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

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

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

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

بعد ضبط 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 في المؤسسة. استبدِل القيم في {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) وإبطال رموز OAuth 2.0 المميزة (HTTP PUT) استنادًا إلى رقم تعريف المستخدم أو رقم تعريف التطبيق. للتحكّم في إمكانية الوصول، يمكنك إعداد الحصول على الأذونات ووضعها في مورد /oauth2 لمؤسسة معيّنة. يحتوي هذا المورد على عنوان URL بالشكل:

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

يجب أن يحصل دور مشرف المؤسسة على الأذونات اللازمة من قبل. بالنسبة إلى دور 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
  • استخدام متغيّر تدفق يقدّم رقم تعريف المستخدم النهائي