تستجيب واجهة API الخاصة في متصفحك لحظة انضمام الحاسوب المحمول إلى شبكة VPN، فيبدو أن التكامل «يجب أن يعمل». لكنه لا يعمل، لأن الشيفرة التي تنفّذ النداء تعمل في مكان آخر تمامًا. يُنفَّذ Apex على خوادم تطبيقات Salesforce، ويُنفَّذ نشاط من جانب الخادم في Marketing Cloud داخل بيئة تشغيل ذلك المنتج. ولا أحدهما يرث نفق حاسوبك المحمول. نفّذ ذلك كإجراء قصير: حدّد المتصل، واختر مدخلًا يستطيع ذلك المتصل الوصول إليه، واربط المسار من طرف إلى طرف، ثم تحقّق من بيئة التشغيل نفسها.

اكتب بطاقة المتصل قبل أي تغيير في الشبكة

املأ خمسة حقول وارفض تخمين أي منها. منتج التنفيذ وسياقه يحدّدان كل ما يلي، فابدأ من هناك لا من جدار الحماية الخاص بالخادم.

FieldWhat it must answer
RuntimeWhich product and execution context issues the request?
EndpointWhich hostname must that runtime resolve, and to what?
PathWhich supported public entry or private connection carries it?
IdentityWhich credential and which operation is the API asked to authorize?
FailureHow do responses return, and what happens when the path is down?

علامة تبويب في المتصفح ونداء Apex عميلان مختلفان، والمتصفح العامل يثبت فقط وجود مسار من مكتبك. إذا قال حقل بيئة التشغيل Apex، فالسؤال ذو الصلة هو من أي عناوين تخرج Salesforce، لا أي عناوين يحملها حاسوبك المحمول. لهذا يمكن لنفق يجعل واجهة API تُحمَّل في المتصفح أن يترك التكامل يفشل بالمهلة نفسها السابقة. بطاقة المتصل موجودة لمنع هذا الخطأ قبل أن يعدّل أحد جدار حماية.

اختر المدخل الذي يستطيع المتصل استخدامه فعلًا

التصميمان مشروعان، وهما يحلّان مشكلتين مختلفتين. الأول مدخل عام مقصود: بوابة API عبر HTTPS أو خدمة تكامل تصادق المتصل، وتطبّق أذونات ضيقة، وتحتفظ باتصال محمي بالواجهة الخلفية الخاصة. وهذا ليس مثل كشف كل خدمة خلفية أو تمرير منفذ إداري إلى الإنترنت.

الثاني هو اتصال خاص مؤهل. وتصف وثائق Private Connect للاتصالات الصادرة من Salesforce توجيه النداءات المدعومة عبر Outbound Network Connection مرتبط ببيانات اعتماد مسماة، وفق ترتيب AWS PrivateLink المحدد له. للخاصية قيود على مستوى الإصدار والترخيص والمنتج، لذا تأكد من أن المؤسسة مؤهلة قبل التصميم عليها.

لا أي من التصميمين هو عميل OpenVPN مثبّت داخل Salesforce، والادعاء الأقدم بأن كل تكامل يجب أن يصل إلى واجهة خلفية عامة أوسع من اللازم حيثما يناسب اتصال خاص مدعوم. اختر ما تدعمه بيئة التشغيل، ثم أكمل المسار إلى واجهة API الحقيقية: نقطة نهاية AWS لا تعرف مورِدك المحلي ولا ترث مسار حاسوبك المحمول. يجب أن تتبع DNS وتوجيه الواجهة الخلفية وسياسة الوصول وحركة الردود البنية التي اخترتها. والمسار الخاص نصف المبني يفشل بطريقة تشبه تمامًا مشكلة مصادقة.

اربط المسار الخاص من طرف إلى طرف

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

curl -sS -m 5 -o /dev/null -w '%{http_code}\n' http://10.40.8.20:8080/health
dig +short api.partner.example
sf apex run --file scripts/apex/callout-check.apex --target-org integration

يثبت الأمر الأول أن الواجهة الخلفية سليمة من داخل الشبكة الخاصة، ويُظهر الثاني إلى ماذا يُحلّ الاسم، وينفّذ الثالث نداءً من بيئة تشغيل Salesforce الفعلية. استجابة 200 من الأول وفشل من الثالث تعزل الفجوة في المسار أو بيانات الاعتماد لا في الخدمة.

أبقِ نطاق الهوية دقيقًا أثناء الربط. بيانات الاعتماد المسماة لا تصلح وحدها نقطة نهاية يتعذّر الوصول إليها، لأن بيانات الاعتماد والاتصال الخاص إعدادان مرتبطان بمهمتين منفصلتين. قائمة IP المسموح بها تضيّق قبول الشبكة وليست بيانات اعتماد API، لذا احتفظ بالتحقق العادي من TLS وبعملية المصادقة والتناوب الخاصة بالخدمة. وإذا نجح اختبار فقط بعد تعطيل فحص الشهادة، فقد وجدت مشكلة في اسم المضيف لا في المسار، ولا تزال الشهادة بحاجة إلى المطابقة.

تحقّق من بيئة التشغيل ثم سجّل التراجع

اقبل طلبًا مسموحًا غير ضار من بيئة تشغيل التكامل، لا من جهازك. سجّل المصدر المرصود لدى الخدمة المستقبِلة، والهوية الموثّقة، والنتيجة، وطلبًا واحدًا مرفوضًا عمدًا يجب أن يفشل.

curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://api.partner.example/v1/ping
curl -sS -o /dev/null -w '%{http_code}\n' -H 'Authorization: Bearer invalid' https://api.partner.example/v1/ping

نفّذ الفحصين نفسيهما من شبكة الواجهة الخلفية نفسها حتى تُقارن المصادر المرصودة بما أنتجته بيئة التشغيل. الشكل المطلوب هو 200 يتبعه 401 أو 403؛ و200 مرتان تعني أن مسار الرفض غير مطبّق فعليًا.

اكتب التراجع قبل أن تحتاجه: أي إدخال في قائمة السماح، أو بيانات اعتماد مسماة، أو اتصال صادر غيّرته، ومن يملكه، وكيف تعيد القيمة السابقة. ثم أغلق الحلقة بتسمية المتصل السحابي والمسار الكامل للخدمة في التذكرة، حتى لا يعيد أحد فتح المشكلة نفسها كمشكلة VPN.

مقالات ذات صلة