เริ่มต้นใช้งาน App Check กับผู้ให้บริการที่กำหนดเองบนแพลตฟอร์ม Apple

หน้านี้จะแสดงวิธีเปิดใช้ App Check ในแอป Apple โดยใช้ผู้ให้บริการ App Check ที่กำหนดเอง เมื่อเปิดใช้ App Check จะเป็นการช่วยให้มั่นใจว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงทรัพยากร Firebase ของโปรเจ็กต์ได้

หากต้องการใช้ App Check กับผู้ให้บริการในตัว โปรดดูเอกสารสำหรับ App Check กับ App Attest และ App Check กับ DeviceCheck

ก่อนเริ่มต้น

1. เพิ่มคลัง App Check ลงในแอป

  1. เพิ่ม Dependency ของ App Check ลงใน Podfile ของโปรเจ็กต์ โดยทำดังนี้

    pod 'FirebaseAppCheck'

    หรือจะใช้ Swift Package Manager แทนก็ได้

    นอกจากนี้ โปรดตรวจสอบว่าคุณใช้บริการ Firebase และไลบรารีไคลเอ็นต์เวอร์ชันล่าสุดที่คุณใช้อยู่

  2. เรียกใช้ pod install และเปิดไฟล์ .xcworkspace ที่สร้างขึ้น

2. ใช้โปรโตคอล App Check

ก่อนอื่น คุณต้องสร้างคลาสที่ใช้โปรโตคอล AppCheckProvider และ AppCheckProviderFactory

คลาส AppCheckProvider ต้องมีเมธอด getToken(completion:) ซึ่งจะรวบรวมข้อมูลใดก็ตามที่ผู้ให้บริการ App Check ที่กําหนดเองต้องการใช้เป็นหลักฐานยืนยันตัวตน และส่งไปยังบริการรับโทเค็นเพื่อแลกกับโทเค็น App Check SDK ของ App Check จะจัดการแคชโทเค็น ดังนั้นคุณจึงควรรับโทเค็นใหม่ทุกครั้งในการใช้งาน getToken(completion:)

Swift

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
  var app: FirebaseApp

  init(withFirebaseApp app: FirebaseApp) {
    self.app = app
    super.init()
  }

  func getToken() async throws -> AppCheckToken {
    let getTokenTask = Task { () -> AppCheckToken in
      // ...

      // Create AppCheckToken object.
      let exp = Date(timeIntervalSince1970: expirationFromServer)
      let token = AppCheckToken(
        token: tokenFromServer,
        expirationDate: exp
      )

      if Date() > exp {
        throw NSError(domain: "ExampleError", code: 1, userInfo: nil)
      }

      return token
    }

    return try await getTokenTask.value
  }

}

Objective-C

@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>

@property FIRApp *app;

- (id)initWithApp:(FIRApp *)app;

@end

@implementation YourCustomAppCheckProvider

- (id)initWithApp:app {
    self = [super init];
    if (self) {
        self.app = app;
    }
    return self;
}

- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
                                                 NSError * _Nullable))handler {
    dispatch_async(dispatch_get_main_queue(), ^{
        // Logic to exchange proof of authenticity for an App Check token.
        // ...

        // Create FIRAppCheckToken object.
        NSTimeInterval exp = expirationFromServer;
        FIRAppCheckToken *token
            = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
                                       expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];

        // Pass the token or error to the completion handler.
        handler(token, nil);
    });
}

@end

นอกจากนี้ ให้ใช้คลาส AppCheckProviderFactory ที่สร้างอินสแตนซ์ของการใช้งาน AppCheckProvider ดังนี้

Swift

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Objective-C

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
    return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}

@end

3. เริ่มต้น App Check

เพิ่มโค้ดการเริ่มต้นต่อไปนี้ลงใน App Delegate หรือ App Initializer

Swift

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

FirebaseApp.configure()

Objective-C

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

ขั้นตอนถัดไป

เมื่อติดตั้งไลบรารี App Check ในแอปแล้ว ให้เริ่มเผยแพร่แอปที่อัปเดตแล้วให้แก่ผู้ใช้

แอปไคลเอ็นต์ที่อัปเดตแล้วจะเริ่มส่งโทเค็น App Check พร้อมกับคำขอทั้งหมดที่ส่งไปยัง Firebase แต่ผลิตภัณฑ์ Firebase จะไม่กำหนดให้โทเค็นต้องถูกต้องจนกว่าคุณจะเปิดใช้การบังคับใช้ในส่วน App Check ของคอนโซล Firebase

ตรวจสอบเมตริกและเปิดใช้การบังคับใช้

อย่างไรก็ตาม ก่อนที่จะเปิดใช้การบังคับใช้ คุณควรตรวจสอบว่าการดำเนินการดังกล่าวจะไม่รบกวนผู้ใช้ที่ถูกต้องตามกฎหมายที่มีอยู่ ในทางกลับกัน หากคุณเห็นการใช้ทรัพยากรแอปที่น่าสงสัย คุณอาจต้องเปิดใช้การบังคับใช้เร็วขึ้น

คุณดูเมตริก App Check ของบริการที่ใช้อยู่เพื่อช่วยในการตัดสินใจนี้ได้ ดังนี้

เปิดใช้การบังคับใช้ App Check

เมื่อเข้าใจว่า App Check จะส่งผลต่อผู้ใช้อย่างไรและพร้อมที่จะดำเนินการต่อแล้ว ให้เปิดใช้การบังคับใช้ App Check โดยทำดังนี้

ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง

หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้แอปในสภาพแวดล้อมที่ปกติแล้ว App Check จะไม่จัดประเภทว่าถูกต้อง เช่น เครื่องจำลองระหว่างการพัฒนา หรือจากสภาพแวดล้อมการผสานรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์แก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการแก้ไขข้อบกพร่องของ App Check แทนผู้ให้บริการตรวจสอบสิทธิ์จริง

โปรดดูหัวข้อใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องในแพลตฟอร์ม Apple