ตรวจสอบแอป Firebase สำหรับแพลตฟอร์ม Apple

1. บทนำ

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

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Firebase App Check ได้ ในเอกสารประกอบของ Firebase

App Check ใช้บริการเฉพาะแพลตฟอร์มเพื่อตรวจสอบความสมบูรณ์ของแอปและ/หรืออุปกรณ์ บริการเหล่านี้เรียกว่า ผู้ให้บริการรับรอง ผู้ให้บริการรายหนึ่งคือบริการ App Attest ของ Apple ซึ่ง App Check สามารถใช้เพื่อตรวจสอบความถูกต้องของแอพและอุปกรณ์ของ Apple

สิ่งที่คุณจะสร้าง

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

สิ่งที่คุณจะได้เรียนรู้

  • วิธีเพิ่ม Firebase App Check ลงในแอปที่มีอยู่
  • วิธีติดตั้งผู้ให้บริการรับรอง Firebase App Check ต่างๆ
  • วิธีกำหนดค่า App Attest สำหรับแอปของคุณ
  • วิธีกำหนดค่าผู้ให้บริการรับรองการดีบักเพื่อทดสอบแอปของคุณบนเครื่องจำลองระหว่างการพัฒนาแอป

สิ่งที่คุณต้องการ

  • Xcode 13.3.1 หรือใหม่กว่า
  • บัญชี Apple Developer ที่ให้คุณสร้างตัวระบุแอพใหม่ได้
  • อุปกรณ์ iOS/iPadOS ที่รองรับ App Attest (เรียนรู้เกี่ยวกับ ความพร้อมใช้งานของ App Attest API )

2. รับโครงการเริ่มต้น

พื้นที่เก็บข้อมูล Firebase Quickstarts สำหรับ iOS มีแอปตัวอย่างเพื่อสาธิตผลิตภัณฑ์ Firebase ต่างๆ คุณจะใช้แอป Firebase Database Quickstart สำหรับ SwiftUI เป็นฐานสำหรับ Codelab นี้

โคลน Firebase Quickstarts สำหรับที่เก็บ iOS จากบรรทัดคำสั่ง:

git clone https://github.com/firebase/quickstart-ios.git
cd quickstart-ios

เปิดโปรเจ็กต์แอป Quickstart ฐานข้อมูลเรียลไทม์ SwiftUI ใน Xcode:

cd database/DatabaseExampleSwiftUI/DatabaseExample
xed .

3. เพิ่ม App Check ลงในแอปของคุณ

  1. รอให้ Swift Package Manager แก้ไขการขึ้นต่อกันของโปรเจ็กต์
  2. เปิดแท็บ ทั่วไป ของเป้าหมายแอป DatabaseExample (iOS) จากนั้นในส่วน กรอบงาน ไลบรารี และเนื้อหาแบบฝัง ให้คลิกปุ่ม +
  3. เลือกเพื่อเพิ่ม FirebaseAppCheck

4. สร้างและติดตั้งโรงงานผู้ให้บริการ App Check

  1. ในกลุ่มไฟล์ Shared ให้เพิ่มกลุ่มใหม่ชื่อ AppCheck
  2. ภายในกลุ่มนี้ ให้สร้างคลาสโรงงานในไฟล์แยกต่างหาก เช่น 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
      }
    }
    
  3. ถัดไป ใน DatabaseExampleApp.swift ตรวจสอบให้แน่ใจว่าได้นำเข้า FirebaseAppCheck และตั้งค่าอินสแตนซ์ของคลาส MyAppCheckProviderFactory เป็นแฟกทอรีของผู้ให้บริการ App Check
    import 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
  • เริ่มต้นอินสแตนซ์ฐานข้อมูลเรียลไทม์ที่คุณต้องการปกป้อง
  • กำหนดค่าการตรวจสอบแอป

สร้างโครงการ

ขั้นแรก คุณต้องสร้างโปรเจ็กต์ Firebase

  1. ใน คอนโซล Firebase ให้เลือก เพิ่มโครงการ
  2. ตั้งชื่อโปรเจ็กต์ของคุณ App Check Codelab
  3. คลิก ดำเนินการต่อ
  4. ปิดใช้งาน Google Analytics สำหรับโปรเจ็กต์นี้ จากนั้นคลิก สร้างโปรเจ็กต์

สร้างอินสแตนซ์ฐานข้อมูลเรียลไทม์

ตอนนี้ไปที่ส่วน ฐานข้อมูลเรียลไทม์ ของคอนโซล Firebase

  1. คลิกที่ปุ่ม สร้างฐานข้อมูล เพื่อเริ่มขั้นตอนการสร้างฐานข้อมูล
  2. ปล่อยให้ตำแหน่งเริ่มต้น ( us-central1 ) สำหรับฐานข้อมูลไม่เปลี่ยนแปลง และคลิกที่ ถัดไป
  3. ตรวจสอบให้แน่ใจว่าได้เลือก โหมดล็อค แล้วคลิกปุ่ม เปิดใช้งาน เพื่อเปิดใช้งานกฎความปลอดภัยสำหรับฐานข้อมูลของคุณ
  4. ไปที่แท็บ กฎ ของเบราว์เซอร์ฐานข้อมูลเรียลไทม์ และแทนที่กฎเริ่มต้นด้วยรายการต่อไปนี้:
    {
        "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"
                        }
                    }
                }
            }
        }
    }
    
  5. คลิกปุ่ม เผยแพร่ เพื่อเปิดใช้งานกฎความปลอดภัยที่อัปเดต

เตรียมแอป iOS ของคุณให้เชื่อมต่อกับ Firebase

หากต้องการเรียกใช้แอปตัวอย่างบนอุปกรณ์จริง คุณจะต้องเพิ่มโปรเจ็กต์ให้กับทีมพัฒนาของคุณ เพื่อให้ Xcode สามารถจัดการโปรไฟล์การจัดเตรียมที่จำเป็นสำหรับคุณได้ ทำตามขั้นตอนเหล่านี้เพื่อเพิ่มแอปตัวอย่างลงในบัญชีนักพัฒนาของคุณ:

  1. ใน Xcode ให้เลือกโปรเจ็กต์ DatabaseExample ในเนวิเกเตอร์โปรเจ็กต์
  2. เลือกเป้าหมาย DatabaseExample (iOS) และเปิดแท็บ การลงนามและความสามารถ
  3. คุณควรเห็นข้อความแสดงข้อผิดพลาดแจ้งว่า "การลงนามสำหรับ DatabaseExample (iOS) ต้องมีทีมพัฒนา"
  4. อัพเดต ตัวระบุบันเดิล เป็นตัวระบุเฉพาะ วิธีที่ง่ายที่สุดในการบรรลุเป้าหมายนี้คือการใช้ชื่อโดเมนย้อนกลับของเว็บไซต์ของคุณ เช่น com.acme.samples.firebase.quickstart.DatabaseExample (โปรดอย่าใช้ ID นี้ เลือก ID ที่ไม่ซ้ำกันของคุณเองแทน)
  5. เลือกทีมพัฒนาของคุณ
  6. คุณจะรู้ว่าทุกอย่างเป็นไปด้วยดีเมื่อ Xcode แสดง "โปรไฟล์การจัดเตรียม: โปรไฟล์ที่ได้รับการจัดการ Xcode" และไอคอนข้อมูลเล็กๆ ถัดจากป้ายกำกับนี้ การคลิกที่ไอคอนนี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับโปรไฟล์การจัดสรร

เชื่อมต่อแอพ iOS ของคุณ

สำหรับคำอธิบายเชิงลึกเกี่ยวกับการเชื่อมต่อแอปของคุณ โปรดดูเอกสารเกี่ยวกับ การเพิ่ม Firebase ในโครงการ iOS ของคุณ ในการเริ่มต้น ให้ทำตามขั้นตอนหลักเหล่านี้ในคอนโซล Firebase:

  1. จากหน้าจอภาพ รวมโปร เจ็กต์ของโปรเจ็กต์ใหม่ของคุณ คลิกที่ปุ่ม + เพิ่มแอป จากนั้นคลิกที่ไอคอน iOS+ เพื่อเพิ่มแอป iOS ใหม่ให้กับโปรเจ็กต์ Firebase ของคุณ
  2. ป้อนรหัสชุดของแอปของคุณ (ใช้รหัสที่คุณกำหนดไว้ในส่วนก่อนหน้า เช่น com.acme.samples.firebase.quickstart.DatabaseExample - โปรดทราบว่านี่ จะต้อง เป็นตัวระบุที่ไม่ซ้ำกัน)
  3. คลิกลง ทะเบียนแอป
  4. Firebase สร้างไฟล์ GoogleService-Info.plist ที่มีข้อมูลเมตา Firebase ที่จำเป็นทั้งหมดสำหรับแอปของคุณ
  5. คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อดาวน์โหลดไฟล์
  6. ใน Xcode คุณจะเห็นว่าโปรเจ็กต์มีไฟล์ชื่อ GoogleService-Info.plist อยู่แล้ว ลบไฟล์นี้ก่อน จากนั้นคุณจะแทนที่ด้วยไฟล์สำหรับโปรเจ็กต์ Firebase ของคุณเองในขั้นตอนถัดไป
  7. คัดลอกไฟล์ GoogleService-Info.plist ที่คุณดาวน์โหลดในขั้นตอนก่อนหน้าลงในโฟลเดอร์รากของโปรเจ็กต์ Xcode ของคุณ และเพิ่มลงในเป้าหมาย DatabaseExample (iOS) ตรวจดูว่าชื่อเป็น GoogleService-Info.plist
  8. คลิกผ่านขั้นตอนที่เหลือของขั้นตอนการลงทะเบียน เนื่องจากโปรเจ็กต์ตัวอย่างได้รับการตั้งค่าอย่างถูกต้องแล้ว คุณจึงไม่จำเป็นต้องทำการเปลี่ยนแปลงโค้ดใดๆ

กำหนดค่าการตรวจสอบสิทธิ์ Firebase

วุ้ย จนถึงขณะนี้มีการตั้งค่าค่อนข้างน้อย แต่ยึดมั่นไว้! หากคุณเพิ่งเริ่มใช้ Firebase คุณได้เห็นส่วนสำคัญของขั้นตอนการทำงานที่คุณจะคุ้นเคยในไม่ช้า

ตอนนี้ คุณจะกำหนดค่า Firebase Authentication สำหรับแอปนี้

เปิดใช้งานผู้ให้บริการลงชื่อเข้าใช้อีเมล/รหัสผ่านการตรวจสอบสิทธิ์

  1. ยังอยู่ใน คอนโซล Firebase ให้เปิดส่วน การรับรองความถูกต้อง ของคอนโซล
  2. คลิก เริ่มต้น เพื่อตั้งค่า Firebase Authentication สำหรับโปรเจ็กต์ของคุณ
  3. เลือกแท็บ วิธีการลงชื่อเข้า ใช้
  4. เลือก อีเมล/รหัสผ่าน ในส่วน ผู้ให้บริการดั้งเดิม
  5. เปิดใช้งาน อีเมล/รหัสผ่าน และคลิก บันทึก

เพิ่มผู้ใช้ทดสอบ

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

ลองใช้แอปนี้ดู

กลับไปที่ Xcode และเรียกใช้แอปพลิเคชันบน iOS Simulator ลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่านสำหรับผู้ใช้ทดสอบที่คุณเพิ่งสร้างขึ้น เมื่อลงชื่อเข้าใช้แล้ว ให้สร้างโพสต์ โพสต์ความคิดเห็นในโพสต์ที่มีอยู่ และติดดาว/ไม่ติดดาวโพสต์

6. กำหนดค่าผู้ให้บริการรับรอง App Attest

ในขั้นตอนนี้ คุณจะกำหนดค่า App Check ให้ใช้ App Attest provider ในคอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่ส่วน App Check ของคอนโซล
  2. คลิก เริ่มต้นใช้งาน
  3. ในแท็บ แอป คลิกแอปของคุณเพื่อขยายรายละเอียด
  4. คลิก App Attest เพื่อกำหนดค่า App Attest จากนั้นป้อน Team ID ของบัญชี Apple Developer ของคุณ (คุณสามารถดูได้ในส่วน การเป็นสมาชิก ในพอร์ทัล Apple Developer): 1645f7a369b678c2.png
  5. คลิก บันทึก

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

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

7. กำหนดค่า App Attest สำหรับแอปพลิเคชันของคุณ

ตอนนี้ได้เวลาลองใช้ Firebase App Check SDK และติดตั้งโค้ดไคลเอ็นต์แล้ว

ขั้นแรก คุณต้องกำหนดค่าโปรเจ็กต์ Xcode เพื่อให้ SDK สามารถใช้ App Attest API ของ Apple เพื่อให้แน่ใจว่าคำขอที่ส่งจากแอปของคุณมาจากอินสแตนซ์ที่ถูกต้องของแอปของคุณ

  1. เพิ่มความสามารถ App Attest สำหรับเป้าหมายแอปของคุณในโครงการ Xcode:
  2. เปิดแท็บ การลงนามและความสามารถ ในการตั้งค่าเป้าหมายแอปของคุณ
  3. คลิกปุ่ม " + "
  4. ในกล่องโต้ตอบ ให้ค้นหาและเลือกความสามารถ App Attest ae84cd988a5fab31.png
  5. ไฟล์ DatabaseExample (iOS).entitlements จะปรากฏในโฟลเดอร์รูทของโปรเจ็กต์ Xcode ของคุณหลังจากดำเนินการขั้นตอนก่อนหน้า
  6. ในไฟล์ DatabaseExample (iOS).entitlements ให้เปลี่ยนค่าสำหรับคีย์ App Attest Environment เป็นการ production.

เมื่อคุณทำตามขั้นตอนเหล่านี้เสร็จแล้วและเปิดแอปบนอุปกรณ์ iOS จริง (iPhone/iPad) แอปจะยังสามารถเข้าถึงฐานข้อมูลเรียลไทม์ได้ ในขั้นตอนต่อไป คุณจะ ต้องบังคับใช้ App Check ซึ่งจะบล็อกคำขอที่ส่งจากแอปและอุปกรณ์ที่ผิดกฎหมาย

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับขั้นตอนการทำงานนี้ โปรดดู ที่เปิดใช้งาน App Check ด้วย App Attest บน iOS

8. กำหนดค่าผู้ให้บริการรับรองการดีบักสำหรับ iOS Simulator

ผู้ให้บริการ แก้ไขข้อบกพร่อง 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()
}

วิธีนี้จะช่วยคุณประหยัดโค้ดสองสามบรรทัดในการสร้างโรงงานผู้ให้บริการ App Check ของคุณเอง

ลงทะเบียนความลับในการแก้ไขข้อบกพร่องในคอนโซล Firebase

รับความลับในการแก้ไขข้อบกพร่องจาก iOS Simulator ของคุณ

  1. หากคุณเลือกที่จะติดตั้ง AppCheckDebugProviderFactory (ตัวเลือก 2 ด้านบน) คุณจะต้องเปิดใช้งานการบันทึกการแก้ไขข้อบกพร่องสำหรับแอปของคุณโดยเพิ่ม -FIRDebugEnabled ให้กับอาร์กิวเมนต์การเรียกใช้แอป: f1c6b477a373e144.png
  2. เรียกใช้แอปของคุณบนเครื่องจำลอง
  3. ค้นหาข้อมูลลับในการแก้ไขข้อบกพร่องในคอนโซล Xcode คุณสามารถใช้ตัวกรองคอนโซลเพื่อค้นหาได้เร็วขึ้น: d4c65af93e369c55.png

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

ลงทะเบียนความลับในการแก้ไขข้อบกพร่อง

  1. กลับไปที่คอนโซล Firevbase ไปที่ส่วน App Check
  2. ในแท็บ แอป คลิกแอปของคุณเพื่อขยายรายละเอียด
  3. ในเมนูรายการเพิ่มเติม ให้เลือก จัดการโทเค็นการแก้ไขข้อบกพร่อง : d77c8ff768a00b4b.png
  4. เพิ่มข้อมูลลับที่คุณคัดลอกมาจากคอนโซล Xcode แล้วคลิก บันทึก f845c97b86f694d0.png

หลังจากขั้นตอนเหล่านี้ คุณจะใช้แอปบน Simulator ได้แม้ว่าจะบังคับใช้ App Check ก็ตาม

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

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

9. เปิดใช้งานการบังคับใช้การตรวจสอบแอปสำหรับฐานข้อมูลเรียลไทม์ Firebase

ในตอนนี้ แอปของเราประกาศ AppCheckProviderFactory ที่ส่งคืน AppAttestProvider สำหรับอุปกรณ์จริง เมื่อทำงานบนอุปกรณ์จริง แอปของคุณจะดำเนินการรับรองและส่งผลไปยังแบ็กเอนด์ Firebase อย่างไรก็ตาม แบ็กเอนด์ Firebase ยังคงยอมรับคำขอจากอุปกรณ์ใดๆ, iOS Simulator, สคริปต์ ฯลฯ โหมดนี้มีประโยชน์เมื่อคุณยังมีผู้ใช้ที่มีแอปเวอร์ชันเก่าโดยไม่มี App Check และคุณไม่ต้องการบังคับใช้การเข้าถึง เช็คยัง

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

  1. ในคอนโซล Firebase ในส่วน App Check ให้คลิก Realtime Database เพื่อขยายรายละเอียด
  2. คลิก บังคับใช้

64e6a81fa979b635.png

  1. อ่านข้อมูลในกล่องโต้ตอบการยืนยัน จากนั้นคลิก บังคับใช้

หลังจากทำตามขั้นตอนเหล่านี้แล้ว เฉพาะแอปที่ถูกกฎหมายเท่านั้นที่จะสามารถเข้าถึงฐานข้อมูลได้ แอพอื่นๆ ทั้งหมดจะถูกบล็อก

ลองเข้าถึงฐานข้อมูลเรียลไทม์ด้วยแอปที่ผิดกฎหมาย

หากต้องการดูการดำเนินการบังคับใช้การตรวจสอบแอป ให้ทำตามขั้นตอนเหล่านี้:

  1. ปิดการลงทะเบียน App Check โดยการใส่ความคิดเห็นเกี่ยวกับรหัสการลงทะเบียน App Check ในวิธี init ของจุดเข้าใช้งานแอปของคุณใน DatabaseExampleApp
  2. รีเซ็ตเครื่องจำลองโดยเลือก อุปกรณ์ > ลบเนื้อหาและการตั้งค่าทั้งหมด การดำเนินการนี้จะล้างเครื่องจำลอง (และทำให้โทเค็นอุปกรณ์ใช้ไม่ได้)
  3. เรียกใช้แอปอีกครั้งบน Simulator
  4. ตอนนี้คุณควรเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้:
    [FirebaseDatabase][I-RDB034005] Firebase Database connection was forcefully killed by the server.  Will not attempt reconnect. Reason: Invalid appcheck token.
    

หากต้องการเปิดใช้งาน App Check อีกครั้ง ให้ทำดังต่อไปนี้:

  1. ยกเลิกการแสดงความคิดเห็นรหัสลงทะเบียน App Check ใน DatabaseExampleApp
  2. รีสตาร์ทแอป
  3. จดบันทึกโทเค็น App Check ใหม่ในคอนโซลของ Xcode
  4. ลงทะเบียนโทเค็นการแก้ไขข้อบกพร่องในการตั้งค่า App Check ของแอปในคอนโซล Firebase
  5. เรียกใช้แอปอีกครั้ง
  6. คุณจะไม่เห็นข้อความแสดงข้อผิดพลาดอีกต่อไป และควรจะสามารถเพิ่มโพสต์และความคิดเห็นใหม่ในแอปได้

10. ขอแสดงความยินดี!

9785d32f18b995d2.gif

ตอนนี้คุณรู้วิธี:

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

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

เรียนรู้วิธีใช้การกำหนดค่าระยะไกลเพื่อค่อยๆ เปิดตัว App Check ให้กับผู้ใช้ของคุณใน การค่อยๆ เปิดตัว Firebase App Check โดยใช้ Codelab การกำหนดค่าระยะไกลของ Firebase

นี่เป็นแหล่งข้อมูลอื่นๆ ที่คุณอาจพบว่ามีประโยชน์

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