เกี่ยวกับ Codelab นี้
1 บทนำ
Firebase App Check จะช่วยปกป้องทรัพยากรแบ็กเอนด์จากการละเมิด เช่น การฉ้อโกงผ่านการเรียกเก็บเงินและฟิชชิง โดยตรวจสอบว่าคำขอมาจากแอปและอุปกรณ์ที่ถูกต้องตามกฎหมาย โดยทำงานร่วมกับทั้งบริการ Firebase และบริการแบ็กเอนด์ของคุณเองเพื่อทำให้ทรัพยากรของคุณปลอดภัย
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Firebase App Check ได้ในเอกสาร Firebase
App Check ใช้บริการเฉพาะแพลตฟอร์มเพื่อยืนยันความสมบูรณ์ของแอปและ/หรืออุปกรณ์ บริการเหล่านี้เรียกว่าผู้ให้บริการเอกสารรับรอง หนึ่งในผู้ให้บริการดังกล่าวคือบริการ App Attest ของ Apple ซึ่ง App Check สามารถใช้เพื่อยืนยันความถูกต้องของแอปและอุปกรณ์ของ Apple
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะเพิ่มและบังคับใช้ 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 อย่างรวดเร็วสำหรับที่เก็บ iOS มีแอปตัวอย่างสำหรับสาธิตผลิตภัณฑ์ต่างๆ ของ Firebase คุณจะใช้แอปการเริ่มต้นใช้งานฐานข้อมูลอย่างรวดเร็วสำหรับ SwiftUI เป็นฐานสำหรับ Codelab นี้
โคลนการเริ่มต้นใช้งาน Firebase อย่างรวดเร็วสำหรับที่เก็บ iOS จากบรรทัดคำสั่งดังนี้
git clone https://github.com/firebase/quickstart-ios.git cd quickstart-ios
เปิดโปรเจ็กต์แอป Realtime Database SwiftUI Quickstart ใน Xcode
cd database/DatabaseExampleSwiftUI/DatabaseExample xed .
3 เพิ่ม App Check ลงในแอป
- โปรดรอให้ Swift Package Manager แก้ไขทรัพยากร Dependency ของโปรเจ็กต์
- เปิดแท็บทั่วไปของเป้าหมายแอป
DatabaseExample (iOS)
จากนั้นคลิกปุ่ม + ในส่วนเฟรมเวิร์ก ไลบรารี และเนื้อหาที่ฝัง - เลือกเพื่อเพิ่ม
FirebaseAppCheck
4 สร้างและติดตั้งการตั้งค่าผู้ให้บริการ App Check เป็นค่าเริ่มต้น
- ในกลุ่มไฟล์
Shared
ให้เพิ่มกลุ่มใหม่ที่ชื่อAppCheck
- ภายในกลุ่มนี้ ให้สร้างคลาสเริ่มต้นในไฟล์แยกต่างหาก เช่น
MyAppCheckProviderFactory.swift
โปรดตรวจสอบว่าได้เพิ่มลงในเป้าหมายDatabaseExample (iOS)
แล้ว: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 ให้เลือกเพิ่มโปรเจ็กต์
- ตั้งชื่อโปรเจ็กต์ของคุณว่า
App Check Codelab
- คลิกต่อไป
- ปิดใช้ Google Analytics สำหรับโปรเจ็กต์นี้ แล้วคลิกสร้างโปรเจ็กต์
สร้างอินสแตนซ์ฐานข้อมูลเรียลไทม์
จากนั้นไปที่ส่วนฐานข้อมูลเรียลไทม์ของคอนโซล 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)
และเปิด Signing & ความสามารถ - คุณควรเห็นข้อความแสดงข้อผิดพลาดว่า "การลงชื่อสมัครใช้ DatabaseExample (iOS) ต้องมีทีมพัฒนา"
- อัปเดตตัวระบุแพ็กเกจเป็นตัวระบุที่ไม่ซ้ำกัน วิธีที่ง่ายที่สุดในการดำเนินการดังกล่าวคือการใช้ชื่อโดเมนแบบย้อนกลับของเว็บไซต์ เช่น
com.acme.samples.firebase.quickstart.DatabaseExample
(โปรดอย่าใช้รหัสนี้ ให้เลือกรหัสเฉพาะของคุณเองแทน) - เลือกทีมพัฒนา
- คุณจะรู้ว่าทุกอย่างเป็นไปด้วยดีเมื่อ Xcode แสดง "Provisioning Profile: Xcode Managed Profile" และไอคอนข้อมูลเล็กๆ ที่อยู่ถัดจากป้ายกำกับนี้ การคลิกไอคอนนี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับโปรไฟล์การจัดสรร
เชื่อมต่อแอป iOS ของคุณ
สำหรับคำอธิบายโดยละเอียดเกี่ยวกับการเชื่อมต่อแอป โปรดดูเอกสารเกี่ยวกับการเพิ่ม Firebase ลงในโปรเจ็กต์ iOS หากต้องการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนหลักต่อไปนี้ในคอนโซล Firebase
- จากหน้าจอภาพรวมโปรเจ็กต์ของโปรเจ็กต์ใหม่ ให้คลิกปุ่ม+ เพิ่มแอป จากนั้นคลิกไอคอน iOS+ เพื่อเพิ่มแอป iOS ใหม่ลงในโปรเจ็กต์ Firebase
- ป้อนรหัสชุดของแอป (ใช้รหัสที่คุณได้กำหนดไว้ในส่วนก่อนหน้านี้ เช่น
com.acme.samples.firebase.quickstart.DatabaseExample
โปรดทราบว่าต้องเป็นตัวระบุที่ไม่ซ้ำกัน) - คลิกลงทะเบียนแอป
- Firebase จะสร้างไฟล์
GoogleService-Info.plist
ที่มีข้อมูลเมตา Firebase ทั้งหมดที่จำเป็นสำหรับแอปของคุณ - คลิก Download GoogleService-Info.plist เพื่อดาวน์โหลดไฟล์
- ใน Xcode คุณจะเห็นว่าโปรเจ็กต์มีไฟล์ชื่อ
GoogleService-Info.plist
อยู่แล้ว โปรดลบไฟล์นี้ก่อน ซึ่งจะเป็นการแทนที่ด้วยไฟล์สำหรับโปรเจ็กต์ Firebase ของคุณเองในขั้นตอนถัดไป - คัดลอกไฟล์
GoogleService-Info.plist
ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้าลงในโฟลเดอร์รูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายDatabaseExample (iOS)
โดยตั้งชื่อไฟล์ว่าGoogleService-Info.plist
- คลิกขั้นตอนที่เหลือของขั้นตอนการลงทะเบียน เนื่องจากโปรเจ็กต์ตัวอย่างได้รับการตั้งค่าอย่างถูกต้องอยู่แล้ว คุณจึงไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ กับโค้ด
กำหนดค่าการตรวจสอบสิทธิ์ Firebase
ในที่สุด จนถึงตอนนี้ยังมีการตั้งค่าที่ค่อนข้างซับซ้อน แต่อดใจรอหน่อยนะ หากคุณเพิ่งเริ่มใช้ Firebase คงได้ทราบส่วนสำคัญของเวิร์กโฟลว์ที่คุณจะต้องคุ้นเคยกันไม่น้อยแล้ว
ในขั้นตอนนี้ คุณจะต้องกำหนดค่าการตรวจสอบสิทธิ์ Firebase สำหรับแอปนี้
เปิดใช้ผู้ให้บริการการลงชื่อเข้าใช้อีเมลการตรวจสอบสิทธิ์/รหัสผ่าน
- ขณะที่ยังอยู่ในคอนโซล Firebase ให้เปิดส่วนการตรวจสอบสิทธิ์ของคอนโซล
- คลิกเริ่มต้นใช้งานเพื่อตั้งค่าการตรวจสอบสิทธิ์ Firebase สำหรับโปรเจ็กต์
- เลือกแท็บวิธีการลงชื่อเข้าใช้
- เลือกอีเมล/รหัสผ่านในส่วนผู้ให้บริการเริ่มต้น
- เปิดใช้อีเมล/รหัสผ่าน แล้วคลิกบันทึก
เพิ่มผู้ใช้ทดสอบ
- เปิดแท็บ Users ของส่วน Authentication
- คลิกเพิ่มผู้ใช้
- ระบุอีเมลและรหัสผ่านสำหรับผู้ใช้ทดสอบ แล้วคลิกเพิ่มผู้ใช้
ลองใช้แอปดูสิ
กลับไปที่ Xcode และเรียกใช้แอปพลิเคชันบน iOS Simulator ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านสำหรับผู้ใช้ทดสอบที่คุณเพิ่งสร้าง เมื่อลงชื่อเข้าใช้แล้ว ให้สร้างโพสต์ โพสต์ความคิดเห็นในโพสต์ที่มีอยู่ แล้วติดดาว/ยกเลิกการติดดาวโพสต์
6 กำหนดค่าผู้ให้บริการเอกสารรับรองแอป
ในขั้นตอนนี้ คุณจะต้องกำหนดค่า 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 เพื่อให้มั่นใจว่าคำขอที่ส่งจากแอปมาจากอินสแตนซ์ที่ถูกต้องของแอป
- เพิ่มความสามารถของ App Attest สำหรับเป้าหมายของแอปในโปรเจ็กต์ 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 ในระหว่างกระบวนการพัฒนา ขั้นตอนต่อไป คุณต้องกำหนดค่าผู้ให้บริการแก้ไขข้อบกพร่องร่วมกัน
ติดตั้งผู้ให้บริการแก้ไขข้อบกพร่องของ 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
- หากเลือกติดตั้ง
AppCheckDebugProviderFactory
(ตัวเลือกที่ 2 ด้านบน) คุณต้องเปิดใช้การบันทึกการแก้ไขข้อบกพร่องสำหรับแอปโดยเพิ่ม-FIRDebugEnabled
ลงในอาร์กิวเมนต์การเปิดแอป ดังนี้ - เรียกใช้แอปของคุณในเครื่องจำลอง
- ค้นหาข้อมูลลับสำหรับการแก้ไขข้อบกพร่องในคอนโซล Xcode คุณสามารถใช้ตัวกรองคอนโซลเพื่อให้ค้นหาได้เร็วขึ้น:
หมายเหตุ: ระบบจะสร้างข้อมูลลับสำหรับการแก้ไขข้อบกพร่องสำหรับเครื่องจำลองเมื่อเปิดแอปครั้งแรก และจัดเก็บไว้ในค่าเริ่มต้นของผู้ใช้ หากคุณนำแอปออก รีเซ็ตเครื่องจำลอง หรือใช้เครื่องจำลองอื่น ระบบจะสร้างข้อมูลลับใหม่สำหรับการแก้ไขข้อบกพร่องขึ้น อย่าลืมลงทะเบียนข้อมูลลับสำหรับการแก้ไขข้อบกพร่องใหม่
ลงทะเบียนข้อมูลลับสำหรับการแก้ไขข้อบกพร่อง
- กลับไปที่คอนโซล Firevbase ให้ไปที่ส่วนการตรวจสอบแอป
- ในแท็บแอป ให้คลิกแอปเพื่อขยายรายละเอียด
- ในเมนูรายการเพิ่มเติม ให้เลือกจัดการโทเค็นการแก้ไขข้อบกพร่อง:
- เพิ่มข้อมูลลับที่คุณคัดลอกจากคอนโซล Xcode แล้วคลิก Save
หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณจะใช้แอปในเครื่องมือจำลองได้แม้ว่าจะบังคับใช้การตรวจสอบแอปแล้วก็ตาม
หมายเหตุ: ผู้ให้บริการแก้ไขข้อบกพร่องออกแบบมาเพื่อช่วยป้องกันการรั่วไหลของข้อมูลลับสำหรับแก้ไขข้อบกพร่องโดยเฉพาะ ด้วยวิธีการปัจจุบัน คุณไม่จำเป็นต้องจัดเก็บข้อมูลลับสำหรับการแก้ไขข้อบกพร่องไว้ในซอร์สโค้ด
ดูรายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนนี้ได้ในเอกสารประกอบ ที่หัวข้อใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องใน iOS
9 เปิดใช้การบังคับใช้ App Check สำหรับฐานข้อมูลเรียลไทม์ของ Firebase
สำหรับตอนนี้ แอปของเราประกาศ AppCheckProviderFactory
ที่แสดงผล AppAttestProvider
สำหรับอุปกรณ์จริง เมื่อทำงานในอุปกรณ์จริง แอปจะดำเนินการรับรองและส่งผลลัพธ์ไปยังแบ็กเอนด์ Firebase อย่างไรก็ตาม แบ็กเอนด์ของ Firebase ยังคงยอมรับคำขอจากอุปกรณ์ใดๆ ก็ตาม เครื่องมือจำลอง iOS สคริปต์ ฯลฯ โหมดนี้มีประโยชน์เมื่อคุณยังมีผู้ใช้ที่มีแอปเวอร์ชันเก่าอยู่โดยไม่มี 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 Check สำหรับโปรเจ็กต์ Firebase ของคุณ
- เปิดใช้การบังคับใช้ App Check
ขั้นตอนถัดไป
ดูวิธีใช้การกำหนดค่าระยะไกลเพื่อทยอยเปิดตัว App Check ให้แก่ผู้ใช้ในค่อยๆ เปิดตัว Firebase App Check โดยใช้ Codelab ของการกำหนดค่าระยะไกลของ Firebase
นี่เป็นแหล่งข้อมูลอื่นๆ ที่อาจเป็นประโยชน์กับคุณ
การตั้งค่าที่อธิบายไว้ใน Codelab นี้ใช้ได้กับเกือบทุกกรณี แต่ App Check จะช่วยให้คุณมีความยืดหยุ่นมากขึ้นหากจำเป็น ดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ต่อไปนี้