Catch up on everthing we announced at this year's Firebase Summit. Learn more

เปิดใช้งาน App Check กับผู้ให้บริการที่กำหนดเองบนเว็บแอป

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

หากคุณต้องการที่จะใช้เช็คต่างกับผู้ให้บริการ reCAPTCHA เริ่มต้นดูที่ เปิดใช้งานการตรวจสอบกับ App reCAPTCHA ปพลิเคชันเว็บ

ก่อนจะเริ่ม

1. เพิ่มไลบรารี App Check ในแอปของคุณ

เพิ่ม Firebase เพื่อ app เว็บของคุณ ถ้าคุณยังไม่ได้ อย่าลืมนำเข้าไลบรารี App Check

2. สร้างวัตถุผู้ให้บริการตรวจสอบแอป

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

เว็บรุ่น 9

const { CustomProvider } = require("firebase/app-check");

const appCheckCustomProvider = new CustomProvider({
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
});

เว็บรุ่น8

const appCheckCustomProvider = {
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
};

3. เริ่มต้นการตรวจสอบแอป

เพิ่มรหัสเริ่มต้นต่อไปนี้ในแอปพลิเคชันของคุณ ก่อนที่คุณจะเข้าถึงบริการ Firebase:

เว็บรุ่น 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

const appCheck = initializeAppCheck(app, {
  provider: appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true    
});

เว็บรุ่น8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
appCheck.activate(
  appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

เมื่อติดตั้งไลบรารี App Check ในแอปของคุณแล้ว ให้ปรับใช้

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

4. ตรวจสอบตัวชี้วัดคำขอ

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

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

เครื่องมือสำคัญที่คุณสามารถใช้ในการตัดสินใจนี้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage คือหน้าจอตัววัดคำขอ App Check

เพื่อดู App ตัวชี้วัดการตรวจสอบคำขอสำหรับผลิตภัณฑ์ให้เปิด โครงการการตั้งค่า> App ตรวจสอบ ในส่วนของคอนโซล Firebase ตัวอย่างเช่น:

ภาพหน้าจอของหน้าเมตริก App Check

ตัวชี้วัดคำขอสำหรับแต่ละผลิตภัณฑ์แบ่งออกเป็นสี่หมวดหมู่:

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

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

  • ร้องขอไม่ทราบที่มาเป็นผู้ที่ขาดหายไปต่างตรวจสอบโทเค็นและดูไม่เหมือนพวกเขามาจาก Firebase SDK สิ่งเหล่านี้อาจมาจากคำขอที่สร้างด้วยคีย์ API ที่ถูกขโมยหรือคำขอที่ปลอมแปลงโดยไม่ได้ใช้ Firebase SDK

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

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

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

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

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

ฟังก์ชั่นคลาวด์

สำหรับ Cloud Functions คุณสามารถรับเมตริก App Check ได้โดยตรวจสอบบันทึกของฟังก์ชัน การเรียกใช้ฟังก์ชันที่เรียกได้ทุกครั้งจะปล่อยรายการบันทึกที่มีโครงสร้างดังตัวอย่างต่อไปนี้

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

คุณสามารถวิเคราะห์ตัวชี้วัดเหล่านี้ในคอนโซล Google Cloud โดย การสร้างบันทึกตามตัวชี้วัดที่เคาน์เตอร์ ที่มีตัวกรองตัวชี้วัดต่อไปนี้:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

ป้ายตัวชี้วัด โดยใช้สนาม jsonPayload.verifications.appCheck

5. เปิดใช้งานการบังคับใช้

หากต้องการเปิดใช้การบังคับใช้ ให้ทำตามคำแนะนำสำหรับแต่ละผลิตภัณฑ์ด้านล่าง เมื่อคุณเปิดใช้งานการบังคับใช้สำหรับผลิตภัณฑ์ คำขอที่ไม่ได้รับการยืนยันทั้งหมดสำหรับผลิตภัณฑ์นั้นจะถูกปฏิเสธ

ฐานข้อมูลเรียลไทม์, Cloud Firestore และ Cloud Storage

ในการเปิดใช้การบังคับใช้สำหรับฐานข้อมูลเรียลไทม์, Cloud Firestore (iOS และ Android) และที่เก็บข้อมูลบนคลาวด์:

  1. เปิด ตรวจสอบการตั้งโครงการ> App ส่วนของคอนโซล Firebase

  2. ขยายมุมมองเมตริกของผลิตภัณฑ์ที่คุณต้องการเปิดใช้การบังคับใช้

  3. คลิกที่บังคับใช้และยืนยันการเลือกของคุณ

โปรดทราบว่าอาจใช้เวลาถึง 10 นาทีหลังจากที่คุณเปิดใช้การบังคับใช้เพื่อให้มีผล

ฟังก์ชั่นคลาวด์

ดู เปิดใช้งานการตรวจสอบการบังคับใช้ App สำหรับฟังก์ชั่นคลาวด์