یک ارائه دهنده سفارشی App Check را پیاده سازی کنید

App Check از چندین ارائه‌دهنده پشتیبانی داخلی دارد: DeviceCheck و App Attest در پلتفرم‌های اپل، Play Integrity در اندروید و reCAPTCHA Enterprise در برنامه‌های وب ( مرور کلی ). این‌ها ارائه‌دهندگان شناخته‌شده‌ای هستند که باید نیازهای اکثر توسعه‌دهندگان را برآورده کنند. با این حال، می‌توانید ارائه‌دهندگان App Check سفارشی خود را نیز پیاده‌سازی کنید. استفاده از یک ارائه‌دهنده سفارشی در موارد زیر ضروری است:

  • شما می‌خواهید از ارائه‌دهنده‌ای غیر از ارائه‌دهنده‌های داخلی استفاده کنید.

  • شما می‌خواهید از ارائه‌دهندگان داخلی به روش‌های پشتیبانی‌نشده استفاده کنید.

  • شما می‌خواهید دستگاه‌هایی را که از پلتفرم‌هایی غیر از اپل، اندروید و وب استفاده می‌کنند، تأیید کنید. به عنوان مثال، می‌توانید ارائه‌دهندگان App Check برای سیستم‌عامل‌های دسکتاپ یا دستگاه‌های اینترنت اشیا ایجاد کنید.

  • شما می‌خواهید تکنیک‌های تأیید هویت خودتان را روی هر پلتفرمی پیاده‌سازی کنید.

نمای کلی

برای پیاده‌سازی یک ارائه‌دهنده‌ی سفارشی App Check ، به یک محیط backend امن نیاز دارید که بتواند 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. اختیاری : با ارسال یک شیء AppCheckTokenOptions به createToken() زمان ماندگاری (TTL) توکن‌های App Check که توسط ارائه‌دهنده سفارشی شما صادر شده‌اند را تنظیم کنید. می‌توانید TTL را روی هر مقداری بین 30 دقیقه تا 7 روز تنظیم کنید. هنگام تنظیم این مقدار، به موارد زیر توجه داشته باشید:

    • امنیت: TTL های کوتاه تر امنیت قوی تری را فراهم می کنند، زیرا بازه زمانی که یک توکن فاش شده یا رهگیری شده می تواند توسط یک مهاجم مورد سوء استفاده قرار گیرد را کاهش می دهند.
    • عملکرد: هرچه TTL های کوتاه‌تر باشند، برنامه شما دفعات بیشتری عملیات تصدیق را انجام می‌دهد. از آنجایی که فرآیند تصدیق برنامه هر بار که انجام می‌شود، به درخواست‌های شبکه تأخیر اضافه می‌کند، TTL کوتاه می‌تواند بر عملکرد برنامه شما تأثیر بگذارد.

    مدت زمان پیش‌فرض TTL برای اکثر برنامه‌ها ۱ ساعت است که معقول به نظر می‌رسد.

مراحل بعدی

اکنون که منطق سمت سرور ارائه‌دهنده سفارشی خود را پیاده‌سازی کرده‌اید، یاد بگیرید که چگونه از آن در کلاینت‌های اپل ، اندروید و وب خود استفاده کنید.