تكوين عمليات توزيع بوابة API

مع العلم بأن وظيفتك جاهزة، يمكنك تكاملها واختبار آلية التصديق المحلي لتدقيق JWT باستخدام Oracle Identity Cloud Service.

تكوين توزيع جيت واي API مع مراجعة JWT الأصلية

وباستخدام سمة تدقيق JWT المحلي لجيت واي Oracle Cloud Infrastructure، يمكن إضافة نظام تصديق يستند إلى Java (JWT) لنشرك.

يسمح نوع JWT هذا بتحديد البيانات المطلوبة لإجراء مراجعة مقطع الوصول الوارد (من خلال الرأس أو المعلمة). تتطلب السياسة المعلومات التالية:

  • جهات الإصدار المسموح بها: جهات إصدار المقاطع. يتم دعم خوادم OAuth متعددة، ولكن في هذه الحالة ستستخدم https://identity.oraclecloud.com/.
  • الجمهور: الموارد المطلوب السماح لها بالوصول إلى هذا المقطع.
  • المفاتيح العامة: مجموعة مفاتيح ويب Json (JWKS) المطلوب استخدامها لمراجعة المقطع، ضمن المصدرين والجمهور. يُسمح بنوعين من JWKS:
    • مفاتيح ثابتة: مع هذا الخيار، يلزم تحديد JWKS يدويًا باستخدام صيغة JSON، ويجب أن تتوفر لديك الخصائص المطلوبة وفقًا لـ RFC 7517 القسم 4.
    • المفاتيح البعيدة: مع هذا الخيار، يجب تحديد عنوان URL يمكن من خلاله استهلاك JWKS باستخدام REST. الحد الخاص بهذه الميزة هو أن عنوان URL المحدد يحتاج إلى عدم حماية، حيث إن هذه الميزة لا تدعم حاليًا إمكانية قراءة عناوين URL المحمية لاسترجاع JWKS.
  • خيارات متقدمة:
    • الحد الأقصى لمهمة Clow بالثواني: إذا كانت جيت واي API وموفر الهوية لهما بعض الاختلافات في التوقيت، فستسمح لك هذه القيمة بتعديل وقت نافذة صلاحية المقطع لمحاولة ضبط التوقيت بين خدمتين.
    • المطالبات: للتحقق من المطالبات إذا كان ذلك مطلوبًا للمقطع الوارد. على سبيل المثال، مطالبة client_id أو مطالبة user_id.

قم بتكوين اسم توزيع جديد في جيت واي API مع توجيه للوصول إلى الوظيفة التي تم تكوينها في الخطوات السابقة،باستخدام نقطة النهاية ومراجعة JWT. في هذا المثال، تتم تسمية التوزيع:my_jwt_test.

  1. في وحدة تحكم Oracle Cloud Infrastructure الطرفية، من صفحة بوابة واجهة برمجة التطبيقات، حدد جيت واي النشطة بالنقر على اسمها.
  2. أسفل الموارد، حدد عمليات التوزيع، ثم حدد تكوين توزيع.
  3. قم بتكوين نظام التصديق بالقيم التالية:
    • نوع التصديق: JWT
    • مقطع التصديق: الرأس
    • اسم العنوان: اعتماد
    • مخطط التصديق: الحامل
    • تمكين الوصول المجهول: تمكين
  4. إضافة نطاق Oracle Identity Cloud Service كمُصدر مسموح به، بحيث يمكنك استخدامه كمكون مقطع. في جهات الإصدار، عيّن جهات الإصدار المسموح بها إلى https://identity.oraclecloud.com/
  5. إضافة جمهور. تعيين جمهور مسموح به إلى عنوان URL الخاص بتطبيق Oracle Identity Cloud Service Oracle Functions. على سبيل المثال، https://myinstance.apigateway.mydc.oci.customer-oci.com.
    يجب أن يكون الجمهور المطلوب مراجعته هو الجمهور الخاص بالموارد التي يجب أن يتمكن المقطع المكون من الوصول إليها. في هذه الحالة، نتوقع المقطع من تطبيق Oracle Identity Cloud Service العميل الخاص بمالك مورد تطبيق Oracle Functions، الذي يشتمل عليه كمجال مورد الجماهير الأساسية في تطبيق Oracle Functions Oracle Identity Cloud Service.
  6. قم بإضافة JWK المطلوب استخدامه لمراجعة مقطع JWT الوارد، سواء كان remote أو static JWKS. لإضافة JWKS بعيد:
    1. الوصول إلى وحدة تحكم Oracle Identity Cloud Service.
    2. حدد إعدادات، ثم حدد إعدادات افتراضية.
    3. إذا لم يكن قد تم تمكينه بالفعل، فحدد شهادة توقيع الوصول، وانقر على حفظ، ثم انقر على نعم.
    4. الوصول إلى عنوان URL الخاص بـ JWK لطبعة Oracle Identity Cloud Service. على سبيل المثال: https://idcs-myinstance.identity.dc1.oraclecloud.com/admin/v1/SigningCert/jwk.
    5. بعد الانتهاء من التحقق من إمكانية عرض عنوان URL لـ JWK، ارجع إلى بوابة واجهة برمجة التطبيقات (API) وتكوين المفاتيح العامة. قم بتعيين النوع إلى JWKS عن بعد، وقم بتعيين URI إلى عنوان URL الذي قمت بمراجعته للتو.
  7. لإضافة JWKS ثابت:
    1. تعريف نموذج المفتاح الثابت. وللقيام بذلك، يجب طلب JWK لـ Oracle Identity Cloud Service. يمكنك القيام بذلك باستخدام المنحنى. على سبيل المثال:
      ## Get access token to be able to invoke protected /admin/v1/SigningCert/jwk endpoint.
      # Clientid and ClientSecret should be from an existing IDCS Application in the stripe.
      #
      $ curl -X POST -u "<clientId>:<clientSecret>" https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__"
       
       
      export jwtToken="<RETRIEVED_TOKEN>"
       
      ## Get JWK
      $ curl -X GET  https://idcs-myinstance.identity.dc1.oraclecloud.com/admin/v1/SigningCert/jwk -H "Authorization: Bearer ${jwtToken}"
       
      {
          "keys":[{
              "kty":"RSA",
              "x5t#S256":"<value>",
              "e":"<value>",
              "x5t":"<value>",
              "kid":"SIGNING_KEY",
              "x5c":["<value>"],
              "key_ops":["encrypt","verify","wrapKey"],
              "alg":"RS256",
              "n":"<value>"
          }]
      }
    2. تكوين المفاتيح العامة في بوابة API. تعيين النوع إلى مفاتيح ثابتة. تعيين معرف المفتاح إلى SIGNING_KEY، والصيغة إلى مفتاح ويب JSON. لصق في مفتاح ويب JSON، باستخدام المجموعة الفرعية التالية فقط من القيم التي تحصل عليها من Oracle Identity Cloud Service.
      يتم دعم خصائص معينة فقط لمفتاح JWK بواسطة جيت واي API. بدلاً من الخاصية key_ops، استخدم الخاصية use.
      {
              "kty":"RSA",
              "e":"<value>",
              "kid":"SIGNING_KEY",
              "use":"sig",
              "alg":"RS256",   
              "n":"<value>"
      }
  8. يمكنك اختياريًا إضافة مراجعة إضافية في قسم التحقق من المطالبات. أضف مطالبة client_id للسماح فقط بالقيم المطابقة لتطبيق Oracle Identity Cloud Service المقترن بتطبيق Oracle Visual Builder. في حالة وجود العديد من تطبيقات Oracle Visual Builder، وسيتم إنشاء مقاطع OAuth باستخدام تطبيقات Oracle Visual Builder Oracle Identity Cloud Service متعددة، فستحتاج إلى إضافة كل معرفات عميل Oracle Identity Cloud Service إلى خطوة التحقق هذه. قم بإعداد مفتاح المطالبة على client_id، وأدخل قيمة مطالبة واحدة أو أكثر ثم حدد مربع اختيار مطلوب.
  9. Optionally, you can configure CORS to allow requests from the specified domains. For example, you may need to allow the Oracle Visual Builder server hostnames as permitted origins of requests. Set Allowed Origins to the URLs of your servers, Exposed Headers to Authorization, Allowed Headers to Authorization, Enable Allow Credentials to Yes, and Allowed Methods to GET,POST.
  10. قم بتكوين توجيه للإشارة إلى الوظيفة، مثل نموذج الدالة saasopportunitiesfn. قم بتعيين المسار إلى /assertion/facall، والأساليب لـ GET وPOST، والنوع في Oracle Functions، وتأكد أن التطبيق الموجود في < مقارنة النصوص> تم تحديد مقارنة الأداء الصحيح، وقم بتعيين التطبيق إلى اسم التطبيق مثل myapplication، وتعيين اسم الدالة إلى اسم الوظيفة، مثل saasopportunitiesfn.
بعد حفظ التغييرات، يمكنك مراجعة محتويات حمولة my_jwt_test لتوزيع جيت واي API.

اختبار استدعاء REST لنقطة النهاية

لاختبار استدعاء REST لنقطة النهاية الجديدة، يمكنك استخدام سمة الحصول على مقطع وصول جديد لشركة Postman.

الرجاء ملاحظة أنه في حالة استخدام المقطع الذي تم إنشاؤه في الخطوات التالية لن تتمكن من الوصول إلى نقاط انتهاء Oracle Fusion Applications Cloud Service مباشرة، لأن المقطع تم إنشاؤه باستخدام تطبيق Oracle Identity Cloud Service من Oracle Visual Builder ويُمكن فقط الوصول إلى Oracle Functions مع التكوين الحالي، وذلك لكل المجالات التي قمت بإعدادها مسبقًا. أيضًا، إذا استخدمت تطبيق Oracle Identity Cloud Service مختلف لإنشاء المقطع، وكان هذا التطبيق يفتقد إلى المنح للوصول إلى مجال مورد Oracle Functions فلن تسمح جيت واي API بالطلب (وسينتج عنه الخطأ 401) لأنك أضفت الجمهور من مورد Oracle Functions Oracle Identity Cloud Service. في حالة إضافة المطالبات عن طريق التحقق من الهوية من جانب العميل ، فإن بوابة API تتحقق من تطابق المقاطع مع تلك المقاطع فقط مع معرف عميل Apps في خدمة Oracle Identity Cloud .

استخدم المعلمات التالية للاختبار:

  • نوع منح: بيانات صلاحية كلمة السر - يتم استخدام نوع المنح هذا للتأكد من أن اسم المستخدم الذي تم إدخاله سيكون موضوعًا في المقطع الذي تم إنشاؤه.
  • عنوان URL لمقطع الوصول: عنوان URL لـ OAuth لطبعة Oracle Identity Cloud Service. على سبيل المثال، https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token.
  • اسم المستخدم: مستخدم موجود في كل من Oracle Identity Cloud Service وOracle Fusion Applications Cloud Service مشتملاً على امتيازات ملائمة في كليهما.
  • كلمة السر: أدخل كلمة السر لهذا المستخدم.
  • ClientId: معرف مورد Oracle Identity Cloud Service Client Oracle Functions المقترن بـ Oracle Visual Builder.
  • ClientSecret: البيانات السرية للعميل لمورد Oracle Identity Cloud Service App Client Oracle Functions المقترن بـ Oracle Visual Builder
  • المجال: يجب أن يتطابق هذا المجال مع الموارد التي يوفرها تطبيق Oracle Functions Oracle Identity Cloud Service. على سبيل المثال، https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension
  1. قم باستدعاء التوجيه المكون للإشارة إلى وظيفة asserter الخاصة بك باستخدام Postman والمعلمات الواردة أعلاه.
  2. أو بدلاً من ذلك، استخدم منحنى. على سبيل المثال:
    curl --location --request GET 'https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension/assertion/facall' \
    --header 'Authorization: Bearer <JWT_TOKEN>'
يجب أن تحصل على نتيجة من أي أداة، مماثلة لما يلي:
{
  "principal": "mary.jane",
  "gotPrincipalFrom": "BEARER",
  "statusCode": "200",
  "response": {
    "items": [],
    "count": 0,
    "hasMore": false,
    "limit": 25,
    "offset": 0,
    "links": [
      {
        "rel": "self",
        "href": "https://myfusionservice.fa.dc1.oraclecloud.com:443/fscmRestApi/resources/11.13.18.05/expenses",
        "name": "expenses",
        "kind": "collection"
      }
    ]
  }
}

تكوين توزيع جيت واي API اختياريًا باستخدام التصديق المخصص

استخدم هذه الطريقة إذا اخترت استخدام وظيفة تصديق مخصصة لمراجعة مقطع الحامل للمكالمات الواردة إلى نقاط انتهاء جيت واي API.

هذه هي الدالة الاختيارية التي قمت بتعريفها في حالة اتباع الخطوات من قسم تعريف وظيفة تصديق بشكل اختياري في Oracle Cloud Infrastructure.

  1. لتوزيع جيت واي API، من صفحة جيت واي API، حدد جيت واي النشطة بالنقر على اسمها.
  2. أسفل الموارد، انقر على التوزيعات ثم انقر على تكوين توزيع.
  3. باستخدام الوضع "من البداية"، يمكنك النقر خلال المعالج لتوزيع جيت واي API.
    يمكن بدلاً من ذلك اختيار تحميل ملف تعريف توزيع، كما هو موضح أدناه.

جزء التعليمات البرمجية التالي هو مثال لملف JSON الخاص بمواصفات توزيع Oracle Cloud Infrastructure API الذي يمكنك استخدامه في التوزيع بدلاً من استخدام المعالج. ضمن هذا الملف، يمكننا الاطلاع على:

  • السطور 1-8: نظام طلب تصديق. هذا هو التعريف الذي يوجه أي طلب في هذا التوزيع، عليك أولاً باستدعاء هذه الدالة (functionId)، وإدخال tokenHeader، وإذا كانت القيمة حقيقي true (حقيقي)، وخلاف ذلك الاستجابة برسالة HTTP غير معتمدة.
  • السطور 9-17: تعريف مشاركة الموارد عبر المصادر (CORS) لإدارة ومشاركتها عبر المصادر والتحكم فيها.
  • السطور 18-43: نقطتا إدخال عنوان URL/VERBs لوظائف فردية في FaaS.
{
    "requestPolicies": {
      "authentication": {
        "type": "CUSTOM_AUTHENTICATION",
        "isAnonymousAccessAllowed": true,
        "functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx",
        "tokenHeader": "Authorization"
      }
      "cors":{ 
         "allowedOrigins": [<list-of-origins>], 
         "allowedMethods": [<list-of-methods>], 
         "allowedHeaders": [<list-of-implicit-headers>], 
         "exposedHeaders": [<list-of-exposed-headers>], 
         "isAllowCredentialsEnabled": <true|false>, 
         "maxAgeInSeconds": <seconds> 
      } 
    },
    "routes": [
      {
        "path": "/opportunities",
        "methods": [
          "GET"
        ],
        "requestPolicies": {},
        "backend": {
          "type": "ORACLE_FUNCTIONS_BACKEND",
          "functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
 
        }
      },
      {
        "path": "/opportunities/{optyid}",
        "methods": [
          "PATCH"
        ],
        "requestPolicies": {},
        "backend": {
          "type": "ORACLE_FUNCTIONS_BACKEND",
          "functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
        }
      }
    ]
  }
</seconds></true|false></list-of-exposed-headers></list-of-implicit-headers></list-of-methods></list-of-origins>