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

สิ่งที่คุณต้องมี

  • 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 ลงในแอป

  1. โปรดรอให้ Swift Package Manager แก้ไขทรัพยากร Dependency ของโปรเจ็กต์
  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
  • เริ่มต้นอินสแตนซ์ Realtime Database ที่คุณจะปกป้อง
  • กำหนดค่า App Check

สร้างโปรเจ็กต์

ก่อนอื่นคุณต้องสร้างโปรเจ็กต์ Firebase

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

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

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

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

ลองใช้แอปดูสิ

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

6. กำหนดค่าผู้ให้บริการเอกสารรับรองแอป

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

  1. ในคอนโซล Firebase ให้ไปที่ส่วน App Check ของคอนโซล
  2. คลิกเริ่มต้นใช้งาน
  3. ในแท็บแอป ให้คลิกแอปเพื่อขยายรายละเอียด
  4. คลิก App Attest เพื่อกำหนดค่า App Attest จากนั้นป้อนรหัสทีมของบัญชีนักพัฒนาแอป Apple (ดูได้ในส่วนการเป็นสมาชิกบนพอร์ทัลนักพัฒนาซอฟต์แวร์ของ Apple): 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) แล้ว แอปจะยังเข้าถึง 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

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

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

ลงทะเบียนข้อมูลลับสำหรับการแก้ไขข้อบกพร่อง

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

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

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

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

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

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

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

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

64e6a81fa979b635.png

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

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

ลองเข้าถึง Realtime Database ด้วยแอปที่ผิดกฎหมาย

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

  1. ปิดการลงทะเบียน App Check โดยแสดงความคิดเห็นรหัสการลงทะเบียน App Check ในเมธอด init ของจุดแรกเข้าของแอปใน DatabaseExampleApp
  2. รีเซ็ตเครื่องมือจำลองโดยเลือกอุปกรณ์ > ลบเนื้อหาและการตั้งค่าทั้งหมด การดำเนินการนี้จะล้างข้อมูลเครื่องจำลอง (และทำให้โทเค็นอุปกรณ์เป็นโมฆะ)
  3. เรียกใช้แอปอีกครั้งในเครื่องจำลอง
  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 Check สำหรับโปรเจ็กต์ Firebase ของคุณ
  • เปิดใช้การบังคับใช้ App Check

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

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

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

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