تنفيذ موفر فحص التطبيقات المخصص

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

  • تريد استخدام موفر آخر غير الموفر المدمج.

  • تريد استخدام الموفرين المضمنين بطرق غير مدعومة.

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

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

ملخص

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

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

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

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

  1. قم بتثبيت وتهيئة Admin SDK .

  2. قم بإنشاء نقطة نهاية يمكن الوصول إليها عبر الشبكة والتي يمكنها تلقي بيانات المصادقة من عملائك. على سبيل المثال، استخدام وظائف السحابة:

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

  4. إذا حددت أن العميل أصلي، فاستخدم Admin SDK لسك رمز التحقق من التطبيق وإعادته ووقت انتهاء صلاحيته إلى العميل:

    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) لرموز التحقق من التطبيق الصادرة عن الموفر المخصص الخاص بك عن طريق تمرير كائن AppCheckTokenOptions إلى createToken() . يمكنك ضبط TTL على أي قيمة تتراوح بين 30 دقيقة و7 أيام. عند تعيين هذه القيمة، كن على دراية بالمقايضات التالية:

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

    يعد TTL الافتراضي الذي يبلغ ساعة واحدة معقولًا لمعظم التطبيقات.

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

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