1. บทนำ
Firebase App Check ช่วยปกป้องทรัพยากรแบ็กเอนด์จากการละเมิด เช่น การฉ้อโกงผ่านการเรียกเก็บเงินและฟิชชิง โดยตรวจสอบว่าคำขอมาจากแอปและอุปกรณ์ที่ถูกต้องตามกฎหมาย โดยจะทำงานร่วมกับทั้งบริการ Firebase และบริการแบ็กเอนด์ของคุณเองเพื่อรักษาความปลอดภัยให้กับทรัพยากร
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Firebase App Check ได้ในเอกสารประกอบของ Firebase
App Check ใช้บริการเฉพาะแพลตฟอร์มเพื่อยืนยันความสมบูรณ์ของแอปและ/หรืออุปกรณ์ บริการเหล่านี้เรียกว่าผู้ให้บริการรับรอง ผู้ให้บริการรายหนึ่งคือบริการ App Attest ของ Apple ซึ่ง App Check สามารถใช้เพื่อยืนยันความถูกต้องของแอปและอุปกรณ์ Apple ได้
สิ่งที่คุณจะสร้าง
ในโค้ดแล็บนี้ คุณจะได้เพิ่มและบังคับใช้ App Check ในแอปพลิเคชันตัวอย่างที่มีอยู่ เพื่อให้ Realtime Database ของโปรเจ็กต์ได้รับการปกป้องจากการเข้าถึงโดยแอปและอุปกรณ์ที่ไม่ถูกต้อง
สิ่งที่คุณจะได้เรียนรู้
- วิธีเพิ่ม Firebase App Check ลงในแอปที่มีอยู่
- วิธีติดตั้งผู้ให้บริการการรับรอง Firebase App Check ที่แตกต่างกัน
- วิธีกำหนดค่า App Attest สำหรับแอป
- วิธีกำหนดค่าผู้ให้บริการการรับรองการแก้ไขข้อบกพร่องเพื่อทดสอบแอปในโปรแกรมจำลองระหว่างการพัฒนาแอป
สิ่งที่คุณต้องมี
- Xcode 13.3.1 ขึ้นไป
- บัญชีนักพัฒนาแอปของ Apple ที่อนุญาตให้คุณสร้างตัวระบุแอปใหม่
- อุปกรณ์ iOS/iPadOS ที่รองรับ App Attest (ดูข้อมูลเกี่ยวกับความพร้อมใช้งานของ App Attest API)
2. รับโปรเจ็กต์เริ่มต้น
ที่เก็บ Firebase Quickstarts สำหรับ iOS มีแอปตัวอย่างเพื่อสาธิตผลิตภัณฑ์ Firebase ต่างๆ คุณจะใช้แอปเริ่มต้นอย่างรวดเร็วของฐานข้อมูล Firebase สำหรับ SwiftUI เป็นพื้นฐานของ Codelab นี้
โคลนที่เก็บ Firebase Quickstarts สำหรับ iOS จากบรรทัดคำสั่ง
git clone https://github.com/firebase/quickstart-ios.git cd quickstart-ios
เปิดโปรเจ็กต์แอปเริ่มต้นอย่างรวดเร็วของ Realtime Database SwiftUI ใน Xcode โดยทำดังนี้
cd database/DatabaseExampleSwiftUI/DatabaseExample xed .
3. เพิ่ม App Check ลงในแอป
- รอให้ Swift Package Manager แก้ไขทรัพยากร Dependency ของโปรเจ็กต์
- เปิดแท็บทั่วไปของเป้าหมายแอป
DatabaseExample (iOS)
จากนั้นในส่วนเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง ให้คลิกปุ่ม + - เลือกเพื่อเพิ่ม
FirebaseAppCheck
4. สร้างและติดตั้ง App Check Provider Factory
- ในกลุ่มไฟล์
Shared
ให้เพิ่มกลุ่มใหม่ชื่อAppCheck
- ภายในกลุ่มนี้ ให้สร้างคลาส Factory ในไฟล์แยกต่างหาก เช่น
MyAppCheckProviderFactory.swift
โดยตรวจสอบว่าได้เพิ่มคลาสดังกล่าวลงในDatabaseExample (iOS)
target แล้วimport Firebase class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { #if targetEnvironment(simulator) // App Attest is not available on simulators. // Use a debug provider. return AppCheckDebugProvider(app: app) #else // Use App Attest provider on real devices. return AppAttestProvider(app: app) #endif } }
- จากนั้นใน
DatabaseExampleApp.swift
ให้นำเข้าFirebaseAppCheck
และตั้งค่าอินสแตนซ์ของคลาสMyAppCheckProviderFactory
เป็นโรงงานผู้ให้บริการ App Checkimport SwiftUI import FirebaseCore import FirebaseAppCheck @main struct DatabaseExampleApp: App { init() { // Set an instance of MyAppCheckProviderFactory as an App Check // provider factory before configuring Firebase. AppCheck.setAppCheckProviderFactory(MyAppCheckProviderFactory()) FirebaseApp.configure() } ... }
5. สร้างและกำหนดค่าโปรเจ็กต์ Firebase
หากต้องการใช้ App Check ในโปรเจ็กต์ iOS คุณต้องทำตามขั้นตอนต่อไปนี้ในคอนโซล Firebase
- ตั้งค่าโปรเจ็กต์ Firebase
- เพิ่มแอป iOS ลงในโปรเจ็กต์ Firebase
- กำหนดค่าการตรวจสอบสิทธิ์ Firebase
- เริ่มต้นอินสแตนซ์ Realtime Database ที่คุณจะปกป้อง
- กำหนดค่า App Check
สร้างโปรเจ็กต์
ก่อนอื่นคุณต้องสร้างโปรเจ็กต์ Firebase
- ลงชื่อเข้าใช้คอนโซล Firebase โดยใช้บัญชี Google
- คลิกปุ่มเพื่อสร้างโปรเจ็กต์ใหม่ แล้วป้อนชื่อโปรเจ็กต์ (เช่น
App Check Codelab
) - คลิกต่อไป
- หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
- (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล Firebase (เรียกว่า "Gemini ใน Firebase")
- สำหรับ Codelab นี้ คุณไม่จำเป็นต้องใช้ Google Analytics ดังนั้นให้ปิดตัวเลือก Google Analytics
- คลิกสร้างโปรเจ็กต์ รอให้ระบบจัดสรรโปรเจ็กต์ แล้วคลิกดำเนินการต่อ
สร้างอินสแตนซ์ Realtime Database
ตอนนี้ให้ไปที่ส่วนฐานข้อมูลเรียลไทม์ของคอนโซล Firebase
- คลิกปุ่มสร้างฐานข้อมูลเพื่อเริ่มเวิร์กโฟลว์การสร้างฐานข้อมูล
- ปล่อยให้ตำแหน่งเริ่มต้น (
us-central1
) ของฐานข้อมูลไม่เปลี่ยนแปลง แล้วคลิกถัดไป - ตรวจสอบว่าได้เลือกโหมดล็อกแล้ว และคลิกปุ่มเปิดใช้เพื่อเปิดใช้กฎความปลอดภัยสำหรับฐานข้อมูล
- ไปที่แท็บกฎของเบราว์เซอร์ Realtime Database แล้วแทนที่กฎเริ่มต้นด้วยกฎต่อไปนี้
{ "rules": { // User profiles are only readable/writable by the user who owns it "users": { "$UID": { ".read": "auth.uid == $UID", ".write": "auth.uid == $UID" } }, // Posts can be read by anyone but only written by logged-in users. "posts": { ".read": true, ".write": "auth.uid != null", "$POSTID": { // UID must match logged in user and is fixed once set "uid": { ".validate": "(data.exists() && data.val() == newData.val()) || newData.val() == auth.uid" }, // User can only update own stars "stars": { "$UID": { ".validate": "auth.uid == $UID" } } } }, // User posts can be read by anyone but only written by the user that owns it, // and with a matching UID "user-posts": { ".read": true, "$UID": { "$POSTID": { ".write": "auth.uid == $UID", ".validate": "data.exists() || newData.child('uid').val() == auth.uid" } } }, // Comments can be read by anyone but only written by a logged in user "post-comments": { ".read": true, ".write": "auth.uid != null", "$POSTID": { "$COMMENTID": { // UID must match logged in user and is fixed once set "uid": { ".validate": "(data.exists() && data.val() == newData.val()) || newData.val() == auth.uid" } } } } } }
- คลิกปุ่มเผยแพร่เพื่อเปิดใช้งานกฎความปลอดภัยที่อัปเดต
เตรียมแอป iOS ให้เชื่อมต่อกับ Firebase
หากต้องการเรียกใช้แอปตัวอย่างในอุปกรณ์จริง คุณต้องเพิ่มโปรเจ็กต์ลงในทีมพัฒนาเพื่อให้ Xcode จัดการโปรไฟล์การจัดสรรที่จำเป็นให้คุณได้ ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มแอปตัวอย่างลงในบัญชีนักพัฒนาแอป
- ใน Xcode ให้เลือกโปรเจ็กต์
DatabaseExample
ในแถบนำทางของโปรเจ็กต์ - เลือก
DatabaseExample (iOS)
เป้าหมายและเปิดแท็บการลงนามและความสามารถ - คุณควรเห็นข้อความแสดงข้อผิดพลาดที่ระบุว่า "การลงนามสำหรับ DatabaseExample (iOS) ต้องใช้ทีมพัฒนา"
- อัปเดตตัวระบุชุดเป็นตัวระบุที่ไม่ซ้ำกัน วิธีที่ง่ายที่สุดในการดำเนินการนี้คือการใช้ชื่อโดเมนย้อนกลับของเว็บไซต์ เช่น
com.acme.samples.firebase.quickstart.DatabaseExample
(โปรดอย่าใช้รหัสนี้ ให้เลือกรหัสที่ไม่ซ้ำกันของคุณเองแทน) - เลือกทีมพัฒนา
- คุณจะทราบว่าทุกอย่างเป็นไปด้วยดีเมื่อ Xcode แสดง "Provisioning Profile: Xcode Managed Profile" และไอคอนข้อมูลเล็กๆ ข้างป้ายกำกับนี้ การคลิกไอคอนนี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับโปรไฟล์การจัดสรร
เชื่อมต่อแอป iOS
ดูคำอธิบายโดยละเอียดเกี่ยวกับการเชื่อมต่อแอปได้ในเอกสารประกอบเกี่ยวกับการเพิ่ม Firebase ลงในโปรเจ็กต์ iOS หากต้องการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนหลักต่อไปนี้ในคอนโซล Firebase
- จากหน้าจอภาพรวมโปรเจ็กต์ของโปรเจ็กต์ใหม่ ให้คลิกปุ่ม + เพิ่มแอป แล้วคลิกไอคอน iOS+ เพื่อเพิ่มแอป iOS ใหม่ลงในโปรเจ็กต์ Firebase
- ป้อนรหัส Bundle ของแอป (ใช้รหัสที่คุณกำหนดไว้ในส่วนก่อนหน้า เช่น
com.acme.samples.firebase.quickstart.DatabaseExample
- โปรดทราบว่ารหัสนี้ต้องเป็นตัวระบุที่ไม่ซ้ำ) - คลิกลงทะเบียนแอป
- Firebase จะสร้างไฟล์
GoogleService-Info.plist
ที่มีข้อมูลเมตาของ Firebase ที่จำเป็นทั้งหมดสำหรับแอปของคุณ - คลิกดาวน์โหลด GoogleService-Info.plist เพื่อดาวน์โหลดไฟล์
- ใน Xcode คุณจะเห็นว่าโปรเจ็กต์มีไฟล์ชื่อ
GoogleService-Info.plist
อยู่แล้ว ลบไฟล์นี้ก่อน แล้วแทนที่ด้วยไฟล์สำหรับโปรเจ็กต์ Firebase ของคุณเองในขั้นตอนถัดไป - คัดลอกไฟล์
GoogleService-Info.plist
ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้าลงในโฟลเดอร์รูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายDatabaseExample (iOS)
โดยตรวจสอบว่าไฟล์มีชื่อว่าGoogleService-Info.plist
- คลิกผ่านขั้นตอนที่เหลือของขั้นตอนการลงทะเบียน เนื่องจากโปรเจ็กต์ตัวอย่างได้รับการตั้งค่าอย่างถูกต้องแล้ว คุณจึงไม่จำเป็นต้องเปลี่ยนแปลงโค้ด
กำหนดค่าการตรวจสอบสิทธิ์ Firebase
ในที่สุด การตั้งค่าที่ผ่านมาค่อนข้างเยอะ แต่โปรดรอสักครู่ หากเพิ่งเริ่มใช้ Firebase คุณได้เห็นส่วนสำคัญของเวิร์กโฟลว์ที่คุณจะคุ้นเคยในไม่ช้า
ตอนนี้คุณจะกำหนดค่าการตรวจสอบสิทธิ์ Firebase สำหรับแอปนี้
เปิดใช้ผู้ให้บริการการลงชื่อเข้าใช้ด้วยอีเมล/รหัสผ่านสำหรับการตรวจสอบสิทธิ์
- ยังอยู่ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์ของคอนโซล
- คลิกเริ่มต้นใช้งานเพื่อตั้งค่าการตรวจสอบสิทธิ์ Firebase สำหรับโปรเจ็กต์
- เลือกแท็บวิธีการลงชื่อเข้าใช้
- เลือกอีเมล/รหัสผ่านในส่วนผู้ให้บริการเนทีฟ
- เปิดใช้อีเมล/รหัสผ่าน แล้วคลิกบันทึก
เพิ่มผู้ใช้ทดสอบ
- เปิดแท็บผู้ใช้ในส่วนการตรวจสอบสิทธิ์
- คลิกเพิ่มผู้ใช้
- ระบุอีเมลและรหัสผ่านสำหรับผู้ใช้ทดสอบ แล้วคลิกเพิ่มผู้ใช้
ลองใช้แอป
กลับไปที่ Xcode แล้วเรียกใช้แอปพลิเคชันใน iOS Simulator ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านสำหรับผู้ใช้ทดสอบที่คุณเพิ่งสร้าง เมื่อลงชื่อเข้าใช้แล้ว ให้สร้างโพสต์ โพสต์ความคิดเห็นในโพสต์ที่มีอยู่ และติดดาว/ยกเลิกการติดดาวโพสต์
6. กำหนดค่าผู้ให้บริการการรับรอง App Attest
ในขั้นตอนนี้ คุณจะกำหนดค่า App Check ให้ใช้ผู้ให้บริการ App Attest ในคอนโซล Firebase
- ในคอนโซล Firebase ให้ไปที่ส่วน App Check ของคอนโซล
- คลิกเริ่มต้นใช้งาน
- ในแท็บแอป ให้คลิกแอปเพื่อขยายรายละเอียด
- คลิก App Attest เพื่อกำหนดค่า App Attest จากนั้นป้อนรหัสทีมของบัญชีนักพัฒนาซอฟต์แวร์ Apple (คุณดูรหัสนี้ได้ในส่วนการเป็นสมาชิกในพอร์ทัลนักพัฒนาซอฟต์แวร์ Apple)
- คลิกบันทึก
ด้วยวิธีนี้ คุณจะมีโปรเจ็กต์ Firebase ที่ใช้งานได้ซึ่งเชื่อมต่อกับแอปใหม่ของเรา และเปิดใช้ App Check แล้ว
ตอนนี้คุณพร้อมกำหนดค่าบริการการรับรองที่เฉพาะเจาะจงของเราแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์นี้ได้ที่เปิดใช้ App Check ด้วย App Attest ใน iOS
7. กำหนดค่า App Attest สำหรับแอปพลิเคชัน
ตอนนี้ได้เวลาลงมือใช้ Firebase App Check SDK และติดตั้งใช้งานโค้ดฝั่งไคลเอ็นต์แล้ว
ก่อนอื่น คุณต้องกำหนดค่าโปรเจ็กต์ Xcode เพื่อให้ SDK ใช้ App Attest API ของ Apple ได้ เพื่อให้มั่นใจว่าคำขอที่ส่งจากแอปมาจากอินสแตนซ์ที่ถูกต้องของแอป
- เพิ่มความสามารถในการรับรองแอปสำหรับเป้าหมายแอปในโปรเจ็กต์ Xcode โดยทำดังนี้
- เปิดแท็บการลงนามและความสามารถในการตั้งค่าเป้าหมายของแอป
- คลิกปุ่ม "+"
- ในกล่องโต้ตอบ ให้ค้นหาและเลือกความสามารถ App Attest
- ไฟล์
DatabaseExample (iOS).entitlements
จะปรากฏในโฟลเดอร์รูทของโปรเจ็กต์ Xcode หลังจากทำตามขั้นตอนก่อนหน้า - ในไฟล์
DatabaseExample (iOS).entitlements
ให้เปลี่ยนค่าสำหรับคีย์App Attest Environment
เป็นproduction.
เมื่อทำตามขั้นตอนเหล่านี้เสร็จแล้วและเปิดแอปในอุปกรณ์ iOS (iPhone/iPad) จริง แอปจะยังคงเข้าถึง Realtime Database ได้ ในขั้นตอนถัดไป คุณจะบังคับใช้ App Check ซึ่งจะบล็อกคำขอที่ส่งจากแอปและอุปกรณ์ที่ไม่ถูกต้อง
ดูข้อมูลเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์นี้ได้ที่เปิดใช้ App Check ด้วย App Attest ใน iOS
8. กำหนดค่าผู้ให้บริการการรับรองข้อบกพร่องสำหรับโปรแกรมจำลอง iOS
ผู้ให้บริการการแก้ไขข้อบกพร่องของ Firebase App Check ช่วยให้ทดสอบแอปพลิเคชันที่มีการบังคับใช้ Firebase App Check ในสภาพแวดล้อมที่ไม่น่าเชื่อถือได้ ซึ่งรวมถึง iOS Simulator ในระหว่างกระบวนการพัฒนา จากนั้นคุณต้องกำหนดค่าผู้ให้บริการแก้ไขข้อบกพร่องร่วมกัน
ติดตั้งผู้ให้บริการแก้ไขข้อบกพร่องของ Firebase ในแอป
ตัวเลือกที่ 1: สร้างอินสแตนซ์ของผู้ให้บริการการแก้ไขข้อบกพร่องแบบมีเงื่อนไขในโรงงาน
คุณได้ดำเนินการส่วนใหญ่ไปแล้วเมื่อสร้างโรงงานผู้ให้บริการ App Check ในขั้นตอนนี้ คุณจะเพิ่มการบันทึกข้อมูลลับการแก้ไขข้อบกพร่องในเครื่องที่สร้างโดยผู้ให้บริการการแก้ไขข้อบกพร่อง เพื่อให้คุณลงทะเบียนอินสแตนซ์ของแอปนี้ในคอนโซล Firebase เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องได้
อัปเดต MyAppCheckProviderFactory.swift
ด้วยรหัสต่อไปนี้
import Firebase
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
// Use App Attest provider on real devices.
return AppAttestProvider(app: app)
#endif
}
}
แนวทางนี้ช่วยให้เรามีความยืดหยุ่นมากขึ้นในการกำหนดค่า App Check ตามสภาพแวดล้อม เช่น คุณอาจใช้ผู้ให้บริการการรับรองอื่นๆ เช่น DeviceCheck หรือผู้ให้บริการการรับรองที่กำหนดเองในเวอร์ชันของระบบปฏิบัติการที่ App Attest ไม่พร้อมใช้งาน ดูตัวอย่างด้านล่าง
import Firebase
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
if #available(iOS 14.0, *) {
// Use App Attest provider on real devices.
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
#endif
}
}
ตัวเลือกที่ 2: ติดตั้ง AppCheckDebugProviderFactory
ในกรณีที่ง่ายกว่า คุณสามารถติดตั้ง AppCheckDebugProviderFactory
ชั่วคราวหรือแบบมีเงื่อนไขก่อนที่จะกำหนดค่าอินสแตนซ์แอปพลิเคชัน Firebase ได้
init() {
#if targetEnvironment(simulator)
let providerFactory = AppCheckDebugProviderFactory()
#else
let providerFactory = MyAppCheckProviderFactory()
#endif
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
}
ซึ่งจะช่วยให้คุณประหยัดโค้ด 2-3 บรรทัดในการสร้างโรงงานผู้ให้บริการ App Check ของคุณเอง
ลงทะเบียนข้อมูลลับการแก้ไขข้อบกพร่องในคอนโซล Firebase
รับข้อมูลลับในการแก้ไขข้อบกพร่องจาก iOS Simulator
- หากเลือกติดตั้ง
AppCheckDebugProviderFactory
(ตัวเลือกที่ 2 ด้านบน) คุณต้องเปิดใช้การบันทึกการแก้ไขข้อบกพร่องสำหรับแอปโดยเพิ่ม-FIRDebugEnabled
ลงในอาร์กิวเมนต์การเปิดแอป: - เรียกใช้แอปในโปรแกรมจำลอง
- ค้นหาข้อมูลลับการแก้ไขข้อบกพร่องในคอนโซล Xcode คุณใช้ตัวกรองคอนโซลเพื่อค้นหาได้เร็วขึ้น
หมายเหตุ: ระบบจะสร้างข้อมูลลับในการแก้ไขข้อบกพร่องสำหรับโปรแกรมจำลองเมื่อเปิดแอปครั้งแรก และจะจัดเก็บไว้ในการตั้งค่าเริ่มต้นของผู้ใช้ หากนำแอปออก รีเซ็ตโปรแกรมจำลอง หรือใช้โปรแกรมจำลองอื่น ระบบจะสร้างข้อมูลลับในการแก้ไขข้อบกพร่องใหม่ อย่าลืมลงทะเบียนข้อมูลลับการแก้ไขข้อบกพร่องใหม่
ลงทะเบียนรหัสลับการแก้ไขข้อบกพร่อง
- กลับไปที่คอนโซล Firebase แล้วไปที่ส่วน App Check
- ในแท็บแอป ให้คลิกแอปเพื่อขยายรายละเอียด
- ในเมนูรายการเพิ่มเติม ให้เลือกจัดการโทเค็นการแก้ไขข้อบกพร่อง:
- เพิ่มรหัสลับที่คัดลอกจากคอนโซล Xcode แล้วคลิกบันทึก
หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณจะใช้แอปในโปรแกรมจำลองได้แม้ว่าจะมีการบังคับใช้ App Check ก็ตาม
หมายเหตุ: ผู้ให้บริการแก้ไขข้อบกพร่องได้รับการออกแบบมาโดยเฉพาะเพื่อช่วยป้องกันไม่ให้ความลับในการแก้ไขข้อบกพร่องรั่วไหล ด้วยแนวทางปัจจุบัน คุณจึงไม่จำเป็นต้องจัดเก็บข้อมูลลับในการแก้ไขข้อบกพร่องไว้ในซอร์สโค้ด
ดูรายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนการทำงานนี้ได้ในเอกสารประกอบ - ดูใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องใน iOS
9. เปิดใช้การบังคับใช้ App Check สำหรับฐานข้อมูลเรียลไทม์ของ Firebase
ตอนนี้แอปของเราประกาศ AppCheckProviderFactory
ที่แสดงผล AppAttestProvider
สำหรับอุปกรณ์จริง เมื่อเรียกใช้ในอุปกรณ์จริง แอปจะทำการรับรองและส่งผลลัพธ์ไปยังแบ็กเอนด์ของ Firebase อย่างไรก็ตาม Backend ของ Firebase ยังคงยอมรับคำขอจากอุปกรณ์ใดก็ได้, iOS Simulator, สคริปต์ ฯลฯ โหมดนี้มีประโยชน์ในกรณีที่คุณยังมีผู้ใช้ที่ใช้แอปเวอร์ชันเก่าที่ไม่มี App Check และคุณยังไม่ต้องการบังคับใช้การตรวจสอบการเข้าถึง
ตอนนี้คุณต้องเปิดใช้การบังคับใช้ App Check เพื่อให้มั่นใจว่าแอป Firebase จะเข้าถึงได้จากอุปกรณ์ที่ถูกต้องตามกฎหมายเท่านั้น แอปเวอร์ชันเก่าที่ไม่ได้ผสานรวม App Check จะหยุดทำงานเมื่อคุณเปิดใช้การบังคับใช้สำหรับโปรเจ็กต์ Firebase
- ในคอนโซล Firebase ในส่วน App Check ให้คลิกฐานข้อมูลเรียลไทม์เพื่อขยายรายละเอียด
- คลิกบังคับใช้
- อ่านข้อมูลในกล่องโต้ตอบการยืนยัน แล้วคลิกบังคับใช้
หลังจากทำตามขั้นตอนเหล่านี้แล้ว เฉพาะแอปที่ถูกต้องเท่านั้นที่จะเข้าถึงฐานข้อมูลได้ ส่วนแอปอื่นๆ ทั้งหมดจะถูกบล็อก
ลองเข้าถึง Realtime Database ด้วยแอปที่ไม่ถูกต้อง
หากต้องการดูการบังคับใช้ App Check ในการทำงาน ให้ทำตามขั้นตอนต่อไปนี้
- ปิดการลงทะเบียน App Check โดยการแสดงความคิดเห็นในโค้ดการลงทะเบียน App Check ในเมธอด
init
ของจุดแรกเข้าของแอปในDatabaseExampleApp
- รีเซ็ตโปรแกรมจำลองโดยเลือกอุปกรณ์ > ลบเนื้อหาและการตั้งค่าทั้งหมด การดำเนินการนี้จะล้างข้อมูลในโปรแกรมจำลอง (และทำให้โทเค็นอุปกรณ์ใช้งานไม่ได้)
- เรียกใช้แอปอีกครั้งในโปรแกรมจำลอง
- ตอนนี้คุณควรเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้
[FirebaseDatabase][I-RDB034005] Firebase Database connection was forcefully killed by the server. Will not attempt reconnect. Reason: Invalid appcheck token.
หากต้องการเปิดใช้ App Check อีกครั้ง ให้ทำดังนี้
- ยกเลิกการแสดงความคิดเห็นในโค้ดการลงทะเบียน App Check ใน
DatabaseExampleApp
- รีสตาร์ทแอป
- จดโทเค็น App Check ใหม่ในคอนโซลของ Xcode
- ลงทะเบียนโทเค็นการแก้ไขข้อบกพร่องในการตั้งค่า App Check ของแอปในคอนโซล Firebase
- เรียกใช้แอปอีกครั้ง
- คุณจะไม่เห็นข้อความแสดงข้อผิดพลาดอีกต่อไป และจะสามารถเพิ่มโพสต์และความคิดเห็นใหม่ๆ ในแอปได้
10. ยินดีด้วย
ตอนนี้คุณทราบวิธีทำสิ่งต่อไปนี้แล้ว
- เพิ่ม App Check ลงในโปรเจ็กต์ที่มีอยู่
- กำหนดค่าผู้ให้บริการการรับรอง App Attest สำหรับแอปเวอร์ชันที่ใช้งานจริง
- กำหนดค่าผู้ให้บริการการรับรองการแก้ไขข้อบกพร่องเพื่อทดสอบแอปในโปรแกรมจำลอง
- สังเกตการเปิดตัวเวอร์ชันแอปเพื่อดูว่าเมื่อใดควรบังคับใช้ App Check สำหรับโปรเจ็กต์ Firebase
- เปิดใช้การบังคับใช้ App Check
ขั้นตอนถัดไป
ดูวิธีใช้การกำหนดค่าระยะไกลเพื่อเปิดตัว App Check ให้ผู้ใช้ทีละน้อยในการเปิดตัว Firebase App Check ทีละน้อยโดยใช้ Codelab การกำหนดค่าระยะไกลของ Firebase
แหล่งข้อมูลอื่นๆ ที่อาจเป็นประโยชน์มีดังนี้
การตั้งค่าที่อธิบายไว้ใน Codelab นี้จะใช้ได้ในกรณีส่วนใหญ่ แต่ App Check จะช่วยให้คุณมีความยืดหยุ่นมากขึ้นหากจำเป็น โปรดดูรายละเอียดเพิ่มเติมที่ลิงก์ต่อไปนี้