หน้านี้จะแสดงวิธีเปิดใช้ App Check ในแอป Apple โดยใช้ผู้ให้บริการ App Check ที่กำหนดเอง เมื่อเปิดใช้ App Check คุณจะช่วยให้มั่นใจได้ว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงทรัพยากร Firebase ของโปรเจ็กต์ได้
หากต้องการใช้ App Check กับผู้ให้บริการในตัว โปรดดูเอกสารสำหรับ App Check กับ App Attest และ App Check กับ DeviceCheck
ก่อนเริ่มต้น
เพิ่ม Firebase ในโปรเจ็กต์ Apple หากยังไม่ได้ดำเนินการ
1. เพิ่มไลบรารี App Check ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและ จัดการทรัพยากร Dependency ของ Firebase
ใน Xcode ขณะที่โปรเจ็กต์แอปเปิดอยู่ ให้ไปที่ไฟล์ > เพิ่มแพ็กเกจ เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Apple ของ Firebase (
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 สำหรับ 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 สำหรับ iOS, Maps JavaScript API และ Places API (ใหม่)
- เปิดใช้การบังคับใช้ App Check สำหรับ Cloud Functions
ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง
หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้แอปในสภาพแวดล้อมที่ปกติแล้ว App Check จะไม่จัดประเภทว่าถูกต้อง เช่น เครื่องมือจำลองระหว่างการพัฒนาซอฟต์แวร์ หรือจากสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์การแก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการโปรแกรมแก้ไขข้อบกพร่อง App Check แทนผู้ให้บริการรับรองจริงได้
ดูหัวข้อใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องในแพลตฟอร์มของ Apple