از App Check برای ایمن کردن کلید API خود استفاده کنید (جدید)

Firebase App Check با مسدود کردن ترافیکی که از منابعی غیر از برنامه‌های قانونی می‌آید، از تماس‌های برنامه شما به پلتفرم Google Maps محافظت می‌کند. این کار را با بررسی نشانه ای از ارائه دهنده گواهی مانند App Attest انجام می دهد. ادغام برنامه‌هایتان با App Check به محافظت در برابر درخواست‌های مخرب کمک می‌کند، بنابراین برای تماس‌های API غیرمجاز هزینه‌ای از شما دریافت نمی‌شود.

آیا App Check برای من مناسب است؟

App Check در اکثر موارد توصیه می شود، اما در موارد زیر به بررسی برنامه نیازی نیست یا پشتیبانی نمی شود:

  • برنامه های خصوصی یا آزمایشی اگر برنامه شما برای عموم قابل دسترسی نیست، برنامه بررسی لازم نیست.
  • اگر برنامه شما فقط از سرور به سرور استفاده می شود، بررسی برنامه مورد نیاز نیست. با این حال، اگر سروری که با GMP ارتباط برقرار می کند توسط مشتریان عمومی (مانند برنامه های تلفن همراه) استفاده می شود، برای محافظت از آن سرور به جای GMP از App Check استفاده کنید.
  • ارائه‌دهندگان گواهی‌نامه پیشنهادی App Check روی دستگاه‌هایی که توسط ارائه‌دهنده گواهی‌نامه شما در معرض خطر یا غیرقابل اعتماد تشخیص داده می‌شوند، کار نمی‌کنند. اگر نیاز به پشتیبانی از چنین دستگاه هایی دارید، می توانید یک سرویس گواهی سفارشی را مستقر کنید. برای اطلاعات بیشتر، دستورالعمل ها را ببینید.

مروری بر مراحل اجرا

در سطح بالا، این مراحلی هستند که برای یکپارچه کردن برنامه خود با App Check دنبال خواهید کرد:

  1. Firebase را به برنامه خود اضافه کنید.
  2. کتابخانه App Check را اضافه و مقداردهی اولیه کنید.
  3. ارائه دهنده توکن را به برنامه خود اضافه کنید.
  4. API های Places و App Check را راه اندازی کنید.
  5. اشکال زدایی را فعال کنید.
  6. درخواست های برنامه خود را نظارت کنید و در مورد اجرا تصمیم بگیرید.

پس از ادغام با App Check، می‌توانید معیارهای ترافیک باطن را در کنسول Firebase ببینید. این معیارها به تفکیک درخواست‌ها بر اساس همراهی آنها با یک نشانه معتبر App Check ارائه می‌کنند. برای اطلاعات بیشتر به مستندات بررسی برنامه Firebase مراجعه کنید.

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

ملاحظات هنگام برنامه ریزی یکپارچه سازی App Check

در اینجا مواردی وجود دارد که باید هنگام برنامه ریزی ادغام خود در نظر بگیرید:

  • ارائه‌دهندگان گواهی که ما توصیه می‌کنیم، Device Check یا App Atest ، مشمول سهمیه‌ها و محدودیت‌های تعیین‌شده توسط Apple هستند.

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

  • کاربران برنامه شما در هنگام راه اندازی با تاخیر مواجه می شوند. با این حال، پس از آن، هر گونه تأیید مجدد دوره ای در پس زمینه رخ می دهد و کاربران دیگر نباید تاخیری را تجربه کنند. میزان دقیق تاخیر در راه اندازی به ارائه دهنده گواهی انتخابی شما بستگی دارد.

    مدت زمانی که کد App Check معتبر است ( زمان زندگی یا TTL) تعداد دفعات تأیید مجدد را تعیین می کند. این مدت زمان را می توان در کنسول Firebase پیکربندی کرد. تأیید مجدد زمانی اتفاق می افتد که تقریباً نیمی از TTL سپری شده باشد. برای اطلاعات بیشتر، به اسناد Firebase برای ارائه دهنده گواهی خود مراجعه کنید.

برنامه خود را با App Check یکپارچه کنید

پیش نیازها و الزامات

  • برنامه ای با Places SDK نسخه 9.2 یا جدیدتر نصب شده است.
  • شناسه بسته نرم افزاری .
  • شناسه تیم شما از مرکز اعضای Apple، زیر عضویت.
  • اگر قصد دارید از بررسی دستگاه، فایل کلید خصوصی و شناسه کلید خود استفاده کنید.
  • شما باید مالک برنامه در Cloud Console باشید.
  • شما به شناسه پروژه برنامه از کنسول Cloud نیاز دارید

مرحله 1: Firebase را به برنامه خود اضافه کنید

دستورالعمل‌های موجود در اسناد برنامه‌نویس Firebase را دنبال کنید تا Firebase را به برنامه خود اضافه کنید.

وقتی برنامه خود را ثبت می کنید، یک فایل پیکربندی GoogleService-Info.plist دریافت خواهید کرد. این فایل را بدون تغییر به سطح اصلی برنامه خود اضافه کنید.

سویفت

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

هدف-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

مرحله 2: کتابخانه App Check را اضافه کنید و App Check را مقداردهی اولیه کنید

Firebase دستورالعمل هایی را برای هر ارائه دهنده گواهی پیش فرض ارائه می دهد. این دستورالعمل ها به شما نشان می دهد که چگونه یک پروژه Firebase را راه اندازی کنید و کتابخانه App Check را به برنامه خود اضافه کنید. نمونه کدهای ارائه شده را برای مقداردهی اولیه بررسی برنامه دنبال کنید.

  1. دستورالعمل های Firebase را برای افزودن کتابخانه App Check دنبال کنید:
  2. برنامه بررسی را آغاز کنید.
    • اگر از App Attest استفاده می کنید، مستندات توسعه دهنده Firebase را برای App Attest دنبال کنید. .

      دستورالعمل‌های Firebase App Check را برای ایجاد پیاده‌سازی AppCheckProviderFactory و اضافه کردن آن به فایل AppDelegate خود دنبال کنید.

      سویفت

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      هدف-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • اگر از Device Check استفاده می کنید، موارد زیر را به AppDelegate خود اضافه کنید:

      سویفت

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      هدف-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

مرحله 3: ارائه دهنده توکن را اضافه کنید

فایلی به نام AppCheckTokenProvider (یا اگر از Objective-C استفاده می کنید، دو فایل به نام های AppCheckTokenProvider.h و AppCheckTokenProvider.m ) در سطح اصلی برنامه خود ایجاد کنید. دستورهای import و تعریف کلاس زیر را اضافه کنید:

سویفت

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

هدف-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

مرحله 4: API های Places و App Check را راه اندازی کنید

  1. در فایل AppDelegate خود، API Places را مقداردهی اولیه کنید:

    سویفت

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    هدف-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. سپس، App Check API را مقداردهی اولیه کنید:

    سویفت

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    هدف-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

مرحله 5: فعال کردن اشکال زدایی (اختیاری)

اگر می خواهید برنامه خود را به صورت محلی توسعه و آزمایش کنید، یا آن را در محیط یکپارچه سازی پیوسته (CI) اجرا کنید، می توانید یک ساختار اشکال زدایی از برنامه خود ایجاد کنید که از رمز اشکال زدایی برای به دست آوردن نشانه های معتبر App Check استفاده می کند. این به شما امکان می دهد از ارائه دهندگان گواهی واقعی در ساخت اشکال زدایی خودداری کنید.

برای آزمایش برنامه خود در Simulator یا در یک دستگاه آزمایشی:

  • کارخانه ارائه دهنده اشکال زدایی برنامه بررسی را ایجاد و تنظیم کنید.

    این نمونه کد هر دو سناریو اشکال زدایی و تولید را کنترل می کند:

    سویفت

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    هدف-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • ورود به پروژه Xcode خود را فعال کنید، برنامه را راه اندازی کنید و کد اشکال زدایی محلی را در گزارش پیدا کنید.
  • این توکن را به کنسول Firebase اضافه کنید.
  • برای اطلاعات و دستورالعمل‌های بیشتر، به مستندات بررسی برنامه مراجعه کنید.

برای اجرای برنامه خود در محیط CI:

  • یک نشانه اشکال زدایی در کنسول Firebase ایجاد کنید و آن را به فروشگاه کلید امن سیستم CI خود اضافه کنید.
  • در Xcode، یک متغیر محیطی با نام FIRAAppCheckDebugToken و $(APP_CHECK_DEBUG_TOKEN) (یا چیزی مشابه) به طرح آزمایشی خود اضافه کنید.
  • در اسکریپت تست CI خود، رمز اشکال زدایی را به عنوان یک محیط ارسال کنید
  • کارخانه ارائه دهنده اشکال زدایی برنامه بررسی را ایجاد و تنظیم کنید.

    این نمونه کد هر دو سناریو اشکال زدایی و تولید را کنترل می کند:

    سویفت

      #if targetEnvironment(ci)
            let providerFactory = AppCheckDebugProviderFactory()
            AppCheck.setAppCheckProviderFactory(providerFactory)
      #else
            let providerFactory = YourAppCheckProviderFactory()
      #endif
      

    هدف-C

    if (targetEnvironment == ci) {
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
  • برای اطلاعات و دستورالعمل‌های بیشتر، به مستندات بررسی برنامه مراجعه کنید.

مرحله 6: درخواست های برنامه خود را نظارت کنید و در مورد اجرا تصمیم بگیرید

قبل از شروع اجرای، باید مطمئن شوید که کاربران قانونی برنامه خود را مختل نخواهید کرد. برای انجام این کار، از صفحه معیارهای بررسی برنامه دیدن کنید تا ببینید چند درصد از ترافیک برنامه شما تأیید شده، قدیمی یا نامشروع است. وقتی دیدید که اکثر ترافیک شما تأیید شده است، می توانید اجرای آن را فعال کنید.

برای اطلاعات و دستورالعمل‌های بیشتر به مستندات بررسی برنامه Firebase مراجعه کنید.