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

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

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 สำหรับแอปของคุณ
  • วิธีกำหนดค่าผู้ให้บริการรับรองการดีบักเพื่อทดสอบแอปของคุณบน Simulators ระหว่างการพัฒนาแอป

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

  • Xcode 13.3.1 หรือใหม่กว่า
  • บัญชีนักพัฒนา Apple ที่ให้คุณสร้างตัวระบุแอพใหม่
  • อุปกรณ์ 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

เปิดโครงการแอป Realtime Database SwiftUI Quickstart ใน Xcode:

cd database/DatabaseExampleSwiftUI/DatabaseExample
xed .

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

  1. รอให้ Swift Package Manager แก้ไขการขึ้นต่อกันของโปรเจ็กต์
  2. เปิดแท็บ ทั่วไป ของเป้าหมายแอป DatabaseExample (iOS) จากนั้น ในส่วน Frameworks, Libraries และ Embedded Content ให้คลิกปุ่ม +
  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 สำหรับโปรเจ็กต์นี้ แล้วคลิก สร้างโปรเจ็กต์

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

ตอนนี้ ไปที่ส่วน Realtime Database ของคอนโซล Firebase

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

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

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

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

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

ใช้แอพเพื่อหมุน

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

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

ในขั้นตอนนี้ คุณจะต้องกำหนดค่า App Check เพื่อใช้ผู้ให้บริการ App Attest ในคอนโซล Firebase

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

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

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

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

ตอนนี้ได้เวลาลงมือทำ Firebase App Check SDK แล้วติดตั้งโค้ดไคลเอ็นต์บางส่วน

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

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

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

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

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

ผู้ให้บริการ Firebase App Check Debug ทำให้สามารถทดสอบแอปพลิเคชันด้วยการบังคับใช้ 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. เรียกใช้แอพของคุณบน Simulator
  3. ค้นหาความลับในการดีบักในคอนโซล Xcode คุณสามารถใช้ตัวกรองคอนโซลเพื่อค้นหาได้เร็วขึ้น: d4c65af93e369c55.png

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

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

  1. กลับไปที่คอนโซล Firevbase ไปที่ส่วนการ ตรวจสอบแอป
  2. ในแท็บ แอป ให้คลิกที่แอปของคุณเพื่อขยายรายละเอียด
  3. ในเมนูรายการเพิ่มเติม เลือก Manage debug tokens : 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 ในส่วนการ ตรวจสอบแอป ให้คลิก ฐานข้อมูลเรียลไทม์ เพื่อขยายรายละเอียด
  2. คลิก บังคับ ใช้

64e6a81fa979b635.png

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

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

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

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

  1. ปิดการลงทะเบียน App Check โดยแสดงความคิดเห็นเกี่ยวกับรหัสการลงทะเบียน App Check ในวิธี init ของจุดเข้าใช้งานแอปของคุณใน DatabaseExampleApp
  2. รีเซ็ต Simulator โดยเลือก Device > Erase All Content and Settings การดำเนินการนี้จะล้างโปรแกรมจำลอง (และทำให้โทเค็นของอุปกรณ์เป็นโมฆะ)
  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. จดบันทึกโทเค็นการตรวจสอบแอปใหม่ในคอนโซลของ Xcode
  4. ลงทะเบียนโทเค็นการแก้ไขข้อบกพร่องในการตั้งค่าการตรวจสอบแอปของแอปในคอนโซล Firebase
  5. เรียกใช้แอปอีกครั้ง
  6. คุณไม่ควรเห็นข้อความแสดงข้อผิดพลาดอีกต่อไป และควรเพิ่มโพสต์และความคิดเห็นใหม่ในแอปได้

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

9785d32f18b995d2.gif

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

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

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

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

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

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