الاستعانة بموفِّر لخدمة فحص التطبيقات المخصّص

يتوافق App Check تلقائيًا مع عدة موفّرين، وهم DeviceCheck وApp Attest على منصات Apple وPlay Integrity على Android وreCAPTCHA Enterprise في تطبيقات الويب (نظرة عامة). هؤلاء الموفّرون معروفون جيدًا ويجب أن يلبّوا احتياجات معظم المطوّرين. ومع ذلك، يمكنك أيضًا تنفيذ موفّري App Check مخصّصين. يجب استخدام موفّر مخصّص في الحالات التالية:

  • إذا أردت استخدام موفّر آخر غير الموفّرين التلقائيين.

  • إذا أردت استخدام الموفّرين التلقائيين بطرق غير متوافقة.

  • إذا أردت التحقّق من الأجهزة باستخدام منصات أخرى غير Apple وAndroid والويب. على سبيل المثال، يمكنك إنشاء App Check موفّرين لأنظمة التشغيل على أجهزة الكمبيوتر أو أجهزة إنترنت الأشياء.

  • إذا أردت تنفيذ تقنيات التحقّق الخاصة بك على أي منصة.

نظرة عامة

لتنفيذ موفّر App Check مخصّص، تحتاج إلى بيئة آمنة في الخلفية يمكنها تشغيل حزمة Node.js Firebase Admin SDK. يمكن أن تكون هذه البيئة Cloud Functions أو منصة حاويات مثل Cloud Run أو خادمك الخاص.

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

عادةً، يمكنك عرض هذه الخدمة كنقطة نهاية REST أو gRPC، ولكن هذا التفصيل يعود إليك.

إنشاء نقطة نهاية للحصول على الرمز المميّز

  1. ثبِّت حزمة Admin SDK وأعِد تهيئتها.

  2. أنشئ نقطة نهاية يمكن الوصول إليها عبر الشبكة ويمكنها تلقّي بيانات الأصالة من عملائك. على سبيل المثال، باستخدام Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. أضِف إلى نقطة النهاية منطقًا يقيّم بيانات الأصالة. هذا هو المنطق الأساسي لموفّر App Check المخصّص الذي ستحتاج إلى كتابته بنفسك.

  4. إذا تبيّن لك أنّ العميل أصلي، استخدِم Admin SDK لإنشاء رمز App Check مميّز وعرضه وعرض وقت انتهاء صلاحيته على العميل:

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    إذا تعذّر عليك التحقّق من أصالة العميل، اعرض خطأ (على سبيل المثال، اعرض خطأ HTTP 403).

  5. اختياري: اضبط مدة البقاء (TTL) لرموز App Check المميّزة التي يصدرها الموفّر المخصّص من خلال تمرير عنصر AppCheckTokenOptions إلى createToken(). يمكنك ضبط مدة البقاء على أي قيمة تتراوح بين 30 دقيقة و7 أيام. عند ضبط هذه القيمة، يجب مراعاة المقايضات التالية:

    • الأمان: توفّر مدة البقاء الأقصر أمانًا أقوى، لأنّها تقلّل من الفترة التي يمكن للمهاجم فيها إساءة استخدام رمز مميّز تم تسريبه أو اعتراضه.
    • الأداء: تعني مدة البقاء الأقصر أنّ تطبيقك سيجري عملية التصديق بشكل متكرر أكثر. بما أنّ عملية تصديق التطبيق تضيف وقت استجابة لطلبات الشبكة في كل مرة يتم فيها تنفيذها، يمكن أن تؤثر مدة البقاء القصيرة في أداء تطبيقك.

    تُعدّ مدة البقاء التلقائية البالغة ساعة واحدة مناسبة لمعظم التطبيقات.

الخطوات التالية

بعد تنفيذ منطق الموفّر المخصّص من جهة الخادم، تعرَّف على كيفية استخدامه من عملاء Apple وAndroid والـويب.