หน้านี้จะแสดงวิธีเปิดใช้ App Check ในแอป Apple โดยใช้ ผู้ให้บริการ App Check ที่กำหนดเอง เมื่อเปิดใช้ App Check คุณจะช่วยให้มั่นใจได้ว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงทรัพยากร Firebase ของโปรเจ็กต์ได้
หากต้องการใช้ App Check กับผู้ให้บริการในตัว โปรดดูเอกสารสำหรับ App Check กับ App Attest และ App Check กับ DeviceCheck
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากยังไม่ได้ ดำเนินการ
ใช้ตรรกะฝั่งเซิร์ฟเวอร์ของผู้ให้บริการ App Check ที่กำหนดเอง
1. เพิ่มไลบรารี App Check ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและ จัดการทรัพยากร Dependency ของ Firebase
เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ File > Add Packages จากนั้นเพิ่มที่เก็บ SDK ของแพลตฟอร์ม Firebase Apple (
https://github.com/firebase/firebase-ios-sdk) แล้วเลือกไลบรารี FirebaseAppCheck
2. ใช้โปรโตคอล App Check
ขั้นแรก คุณต้องสร้างคลาสที่ใช้โปรโตคอล AppCheckProvider และ
AppCheckProviderFactory
คลาส AppCheckProvider ต้องมีเมธอด getToken(completion:) ซึ่งจะรวบรวมข้อมูลที่ผู้ให้บริการ App Check ที่กำหนดเองต้องการเป็นหลักฐานแสดงความถูกต้อง และส่งข้อมูลดังกล่าวไปยังบริการรับโทเค็นเพื่อแลกกับโทเค็น App Check App Check SDK จะจัดการการแคชโทเค็น ดังนั้นให้รับโทเค็นใหม่เสมอในการใช้งาน
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
เพิ่มโค้ดการเริ่มต้นต่อไปนี้ลงในผู้รับมอบสิทธิ์ของแอปหรือตัวเริ่มต้นแอป
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 สำหรับ Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API และ Places API (ใหม่)
- ตรวจสอบเมตริกคำขอ App Check สำหรับ Cloud Functions
เปิดใช้การบังคับใช้ App Check
เมื่อเข้าใจผลกระทบของ App Check ต่อผู้ใช้และพร้อมที่จะ ดำเนินการต่อแล้ว คุณสามารถเปิดใช้การบังคับใช้ App Check ได้โดยทำดังนี้
- เปิดใช้App Check การบังคับใช้ สำหรับ Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API และ Places API (ใหม่)
- เปิดใช้การบังคับใช้ App Check สำหรับ Cloud Functions
ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง
หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้แอปในสภาพแวดล้อมที่ App Check ปกติจะไม่จัดประเภทว่าถูกต้อง เช่น เครื่องจำลองระหว่างการพัฒนา หรือจากสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์การแก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการการแก้ไขข้อบกพร่องของ App Check แทนผู้ให้บริการการรับรองจริง
ดูหัวข้อใช้ App Check กับผู้ให้บริการการแก้ไขข้อบกพร่องในแพลตฟอร์ม Apple