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

App Check มีการรองรับผู้ให้บริการหลายรายในตัว ได้แก่ DeviceCheck และ App Attest บนแพลตฟอร์ม Apple, Play Integrity และ SafetyNet บน Android และ reCAPTCHA Enterprise ในเว็บแอป (ภาพรวม) ผู้ให้บริการเหล่านี้คือผู้ให้บริการที่เข้าใจเป็นอย่างดีและสอดคล้องกับความต้องการ แต่คุณก็ใช้ App Check ที่กำหนดเองได้ ผู้ให้บริการเครือข่าย จำเป็นต้องใช้ผู้ให้บริการที่กำหนดเองในกรณีต่อไปนี้

  • คุณต้องการใช้ผู้ให้บริการรายอื่นที่ไม่ใช่ผู้ให้บริการที่มีให้

  • คุณต้องการใช้ผู้ให้บริการในตัวในรูปแบบที่ไม่รองรับ

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

  • คุณต้องการใช้เทคนิคการยืนยันของคุณเองบนแพลตฟอร์มใดๆ

ภาพรวม

คุณต้องมีแบ็กเอนด์ที่ปลอดภัยจึงจะใช้ผู้ให้บริการ App Check ที่กำหนดเองได้ ที่สามารถเรียกใช้ Firebase Admin SDK ของ Node.js ซึ่งอาจเป็น Cloud Functions ซึ่งเป็นแพลตฟอร์มคอนเทนเนอร์ เช่น Cloud Run หรือเซิร์ฟเวอร์ของคุณเอง

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

โดยปกติแล้วคุณเปิดเผยบริการนี้เป็นปลายทาง REST หรือ gRPC แต่รายละเอียดนี้ ตามความต้องการของคุณ

สร้างปลายทางการได้โทเค็น

  1. ติดตั้งและเริ่มต้น Admin SDK

  2. สร้างปลายทางที่เข้าถึงเครือข่ายได้ซึ่งรับข้อมูลความถูกต้องจาก ลูกค้าของคุณ ตัวอย่างเช่น การใช้ฟังก์ชันระบบคลาวด์

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. เพิ่มในตรรกะปลายทางที่ประเมินข้อมูลความถูกต้อง นี่คือ ตรรกะหลักของผู้ให้บริการ App Check ที่กำหนดเอง ซึ่งคุณจะต้อง เขียนด้วยตนเอง

  4. หากคุณพิจารณาว่าไคลเอ็นต์เป็นของจริง ให้ใช้ Admin SDK ในการสร้างข้อมูล โทเค็น App Check แล้วส่งกลับและเวลาหมดอายุให้กับไคลเอ็นต์

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    หากคุณยืนยันความถูกต้องของไคลเอ็นต์ไม่ได้ ให้ส่งข้อผิดพลาด (เช่น แสดงผลข้อผิดพลาด HTTP 403)

  5. ไม่บังคับ: ตั้งค่า Time to Live (TTL) สำหรับโทเค็น App Check ที่ออกโดย ผู้ให้บริการที่กำหนดเองของคุณได้โดยการส่งออบเจ็กต์ AppCheckTokenOptions ไปยัง createToken() คุณสามารถตั้งค่า TTL เป็นค่าใดก็ได้ระหว่าง 30 นาทีถึง 7 วัน เมื่อตั้งค่าค่านี้ ให้คำนึงถึงข้อเสียต่อไปนี้

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

    TTL เริ่มต้น 1 ชั่วโมงเป็นสิ่งที่เหมาะสมสำหรับแอปส่วนใหญ่

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

เมื่อคุณใช้ตรรกะฝั่งเซิร์ฟเวอร์ของผู้ให้บริการที่กำหนดเองแล้ว ให้ดูวิธีการ ให้ใช้จาก Apple ของคุณ ไคลเอ็นต์ Android และเว็บ