بوابة الخدمات الموحّدة (ApiGateway)
نقطة الدخول العامة الوحيدة إلى الخدمات المصغّرة. تتحقق من هوية الطلب وتوجّهه إلى الوجهة الصحيحة؛ وتُبنى المسارات من القائمة الحية لاكتشاف الخدمات.
- المجال
- البنية التحتية للمنصة / الحافة وأمن الشبكة
- العملاء المستهدفون
- الفرق التقنية والأمنية في المؤسسة؛ شركاء التكامل (API/مفتاح وصول محدود)؛ مديرو تقنية المعلومات المسؤولون عن تدقيق الحركة
- القدرات الرئيسية
- توجيه ديناميكي من Eureka، التحقق من JWT/API Key، إعادة بناء آمنة لترويسات المستخدم، القائمة السوداء للرموز، Rate Limiting، بوابة توثيق مركزية
ApiGateway هي نقطة الدخول العامة الوحيدة إلى جميع الخدمات المصغّرة في المنصة. بُنيت هذه الخدمة على YARP (Yet Another Reverse Proxy)، وتتحقق من هوية كل طلب وارد، وتُثري بياناته، وتوجّهه إلى الخدمة الوجهة الصحيحة. وتُبنى المسارات خلف Gateway من القائمة الحية لـ Eureka، وليس من ملف إعدادات ثابت؛ أي لا يُكتب أي عنوان backend في appsettings، ولا تتطلب إضافة خدمة جديدة تغييرًا يدويًا للمسارات في Gateway (تنشر كل خدمة segment مسارها الخاص في بيانات تسجيل Eureka الوصفية (metadata)، وتقرؤه Gateway خلال نحو 30 ثانية).
تقرأ طبقة المصادقة في Gateway رمز JWT أو مفتاح API، وتعيد بناء ترويسات المستخدم (User-Id وCompany-Id والأدوار ومعرّف Tenant وغيرها) من الصفر (لمنع تزوير الترويسات من جانب العميل)، وتمرّرها (forward) إلى الخدمة الوجهة؛ وترى كل خدمة لاحقة هذه الترويسات صالحة وجاهزة للاستخدام، دون حاجة إلى إعادة التحقق من الرمز. ويجري في هذه الطبقة أيضًا فحص القائمة السوداء للرموز (logout وlogout-all) واختيار الشركة الحالية للمستخدم (من بين شركاته المصرّح بها)، وليس في كل خدمة على حدة.
كما تستضيف Gateway بوابة التوثيق المركزية (Scalar/Swagger على المسار /docs) التي تجمع وثائق OpenAPI لجميع الخدمات، وتعرض، بحسب صلاحيات كل مستخدم، وثائق الخدمات المصرّح له بها فقط. ومن منظور المشتري المؤسسي، تعني ApiGateway نقطة تحكم أمنية وتشغيلية واحدة للمنصة كلها، بدلًا من أن يضطر كل عميل أو كل فريق إلى التعامل على حدة مع عشرات الخدمات الخلفية (backend).
القدرات والإمكانات الرئيسية
توجيه ديناميكي من Eureka
لا يوجد أي عنوان backend في الإعدادات الثابتة؛ وتظهر الخدمة الجديدة المضافة في قائمة التسجيل وتُوجَّه إليها المسارات تلقائيًا.
التحقق من الرمز ومفتاح API
قبول كل من JWT (مع JWKS من Identity) ومفتاح API بنطاق مسارات محدد، في نقطة واحدة.
إعادة بناء آمنة لترويسات المستخدم
قبل التمرير (forward)، تُزال كل ترويسة واردة من العميل وتُبنى من جديد من claims الرمز الموثوقة؛ وهذا يمنع انتحال الهوية.
فحص القائمة السوداء للرموز على مستويين
سواء كان رمزًا بعينه أو جميع رموز مستخدم (بعد logout-all)، يُرفض في هذه الطبقة قبل وصوله إلى الخدمة الوجهة.
اختيار الشركة الحالية والتحقق منها
إذا لم يكن المستخدم قد اختار شركة، تُختار أولى شركاته المصرّح بها تلقائيًا؛ ويُرفض اختيار شركة خارج قائمة شركاته المصرّح بها.
تحديد معدل الطلبات (Rate Limiting)
حماية عامة من الحمل الزائد، مع حد خاص بصفحة الدخول إلى بوابة التوثيق.
بوابة توثيق مركزية
تجميع OpenAPI لجميع الخدمات خلف صفحة واحدة مع ضبط الوصول بحسب صلاحية المستخدم الفعلية في كل خدمة.
مسارات عامة محددة ومحدودة
لا تمر عبر Gateway دون رمز إلا قائمة صغيرة من المسارات (مثل تسجيل الدخول وصورة الملف الشخصي والشعار العام)؛ أما البقية فتخضع دائمًا للتحقق من الهوية.
القيمة للأعمال
يعني التوجيه القائم على الاكتشاف التلقائي للخدمات (Eureka) أن إضافة خدمة backend أو نقلها تتم دون إيقاف Gateway أو إعادة نشره؛ وهذا يقلل مباشرة زمن تشغيل الخدمات الجديدة والكلفة التشغيلية لصيانة المنصة. ويؤدي تركيز التحقق من الرمز وإعادة بناء الترويسات وفحص القائمة السوداء في طبقة واحدة بدل تكرارها في كل خدمة إلى مستوى أمني أكثر اتساقًا وإلى صيانة أبسط، لأن أي تغيير في السياسة الأمنية يُطبَّق في نقطة واحدة فقط.
سيناريوهات الاستخدام
- تطوير خدمة جديدة بواسطة فريق مستقل تصبح متاحة في يوم التشغيل نفسه، دون تنسيق مع فريق Gateway، خلف العنوان العام /api/{service-name}/.
- منح شريك تجاري وصولًا برمجيًا بمفتاح API مقيّد بخدمة واحدة أو عدة خدمات محددة فقط.
- مراجعة أمنية أو تدقيق يحتاج إلى إثبات أن كل الحركة الواردة تمر عبر نقطة تحكم واحدة.
- الحظر الفوري لجميع جلسات مستخدم مشتبه به على مستوى Gateway، دون الحاجة إلى تغيير في أي خدمة backend.
شاهدوا هذه الوحدة على بيانات تجريبية
في الجلسة التعريفية نستعرض سيناريوهات مؤسستك على النسخة التجريبية من دارا، ونجيب عن أسئلة فريقيك التقني والمالي.