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

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

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

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

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

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

ภาพรวม

หากต้องการใช้ผู้ให้บริการ App Check ที่กำหนดเอง คุณต้องมีสภาพแวดล้อมแบ็กเอนด์ที่ปลอดภัยซึ่งสามารถเรียกใช้ Node.js Firebase Admin SDK ได้ ซึ่งอาจเป็น 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 และ เว็บ ไคลเอ็นต์