Firebase App Check สำหรับแพลตฟอร์ม Apple

1. บทนำ

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

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

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

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

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

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

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

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

  • 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

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

cd database/DatabaseExampleSwiftUI/DatabaseExample
xed .

3. เพิ่มการตรวจสอบแอพในแอพของคุณ

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

4. สร้างและติดตั้งโรงงานผู้ให้บริการตรวจสอบแอป

  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 เป็นโรงงานผู้ให้บริการตรวจสอบแอป
    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 ) สำหรับฐานข้อมูลไม่เปลี่ยนแปลง และคลิกที่ Next
  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) และเปิดแท็บ Signing & Capabilities
  3. คุณควรเห็นข้อความแสดงข้อผิดพลาดว่า "การลงชื่อสำหรับฐานข้อมูลตัวอย่าง (iOS) ต้องการทีมพัฒนา"
  4. อัปเดต ตัวระบุบันเดิล เป็นตัวระบุเฉพาะ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้ชื่อโดเมนย้อนกลับของเว็บไซต์ของคุณ เช่น com.acme.samples.firebase.quickstart.DatabaseExample (โปรดอย่าใช้ ID นี้ ให้เลือก ID เฉพาะของคุณเองแทน)
  5. เลือกทีมพัฒนาของคุณ
  6. คุณจะรู้ว่าทุกอย่างเป็นไปด้วยดีเมื่อ Xcode แสดง "Provisioning Profile: Xcode Managed Profile" และไอคอนข้อมูลเล็กๆ ข้างป้ายกำกับนี้ การคลิกที่ไอคอนนี้จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับโปรไฟล์การจัดเตรียม

เชื่อมต่อแอพ 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 ของคุณ และเพิ่มลงใน Target 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 Attest ในคอนโซล Firebase

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

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

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

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

ตอนนี้ถึงเวลาที่จะรับมือกับ Firebase App Check SDK และนำโค้ดไคลเอ็นต์ไปใช้

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

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

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

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเวิร์กโฟลว์นี้ โปรดดู เปิดใช้งานการตรวจสอบแอปด้วย App Attest บน iOS

8. กำหนดค่า Debug Attestation Provider สำหรับ iOS Simulator

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

ติดตั้งผู้ให้บริการดีบัก Firebase ในแอปของคุณ

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

คุณทำสิ่งนี้ได้เกือบทั้งหมดเมื่อคุณสร้างโรงงานผู้ให้บริการตรวจสอบแอป ในขั้นตอนนี้ คุณจะเพิ่มการบันทึกของความลับในการแก้ไขจุดบกพร่องในเครื่องที่สร้างโดยผู้ให้บริการแก้ไขจุดบกพร่อง ดังนั้นคุณจึงสามารถลงทะเบียนอินสแตนซ์ของแอปนี้ในคอนโซล 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()
}

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

ลงทะเบียนความลับในการแก้ปัญหาของคุณในคอนโซล Firebase

รับความลับในการดีบักจาก iOS Simulator ของคุณ

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

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

ลงทะเบียนความลับในการดีบัก

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

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

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

ดูรายละเอียดเพิ่มเติมเกี่ยวกับโฟลว์นี้ได้ในเอกสาร - โปรดดู ที่ ใช้การตรวจสอบแอปกับผู้ให้บริการดีบั๊กบน iOS

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

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

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

  1. ในคอนโซล Firebase ในส่วน การตรวจสอบแอป ให้คลิก ฐานข้อมูลเรียลไทม์ เพื่อขยายรายละเอียด
  2. คลิก บังคับใช้

64e6a81fa979b635.png

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

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

ลองเข้าถึงฐานข้อมูลเรียลไทม์ด้วยแอปนอกระบบ

หากต้องการดูการบังคับใช้ App Check ให้ทำตามขั้นตอนเหล่านี้:

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

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

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

10. ยินดีด้วย!

9785d32f18b995d2.gif

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

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

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

เรียนรู้วิธีใช้ Remote Config เพื่อทยอยเปิดตัว App Check ให้กับผู้ใช้ของคุณใน การค่อยๆ เปิดตัว Firebase App Check โดยใช้ Firebase Remote Config codelab

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

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