ใช้ App Check เพื่อรักษาความปลอดภัยคีย์ API

Firebase App Check ช่วยปกป้องการเรียกจากแอปของคุณไปยัง Google Maps Platform โดยการบล็อกการเข้าชมที่มาจากแหล่งที่มาอื่นที่ไม่ใช่แอปที่ถูกต้องตามกฎหมาย โดยจะตรวจสอบโทเค็นจากผู้ให้บริการการรับรอง เช่น reCAPTCHA Enterprise การผสานรวมแอปกับ App Check จะช่วยป้องกันคำขอที่เป็นอันตราย คุณจึงไม่ต้องเสียค่าใช้จ่ายสำหรับการเรียก API ที่ไม่ได้รับอนุญาต

App Check เหมาะกับฉันไหม

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

  • คุณใช้ Places SDK เดิม App Check รองรับเฉพาะ Places SDK (ใหม่)
  • แอปส่วนตัวหรือแอปทดลอง หากแอปของคุณเข้าถึงได้เฉพาะภายใน App Check ก็ไม่จำเป็น
  • หากแอปของคุณใช้เฉพาะการสื่อสารระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์ App Check ก็ไม่จำเป็น อย่างไรก็ตาม หากไคลเอ็นต์สาธารณะ (เช่น แอปบนอุปกรณ์เคลื่อนที่) ใช้เซิร์ฟเวอร์ที่สื่อสารกับ GMP ให้พิจารณาใช้ App Check เพื่อปกป้องเซิร์ฟเวอร์นั้นแทน GMP

ภาพรวมขั้นตอนการใช้งาน

โดยรวมแล้ว คุณจะต้องทำตามขั้นตอนต่อไปนี้เพื่อผสานรวมแอปกับ App Check

  1. เพิ่ม Firebase ลงในแอป
  2. เพิ่มและเริ่มต้นใช้งานไลบรารี App Check
  3. เพิ่มผู้ให้บริการโทเค็นลงในแอป
  4. เริ่มต้นใช้งาน Places API และ App Check API
  5. เปิดใช้การแก้ไขข้อบกพร่อง
  6. ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

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

สิ่งที่ควรพิจารณาเมื่อวางแผนการผสานรวม App Check

ต่อไปนี้คือสิ่งที่ควรพิจารณาเมื่อวางแผนการผสานรวม

ผสานรวมแอปกับ App Check

ข้อกำหนดเบื้องต้นและข้อกำหนด

  • แอปที่มี Maps JS API, Core และไลบรารี Places เวอร์ชันรายสัปดาห์หรือรายไตรมาสล่าสุด
  • โปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่เปิดใช้ Maps JS API และ Places API (ใหม่)
  • คุณต้องเป็นเจ้าของแอปใน Cloud Console
  • คุณจะต้องใช้รหัสโปรเจ็กต์ของแอปจาก Cloud Console

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

ทำตามวิธีการในเอกสารประกอบสำหรับนักพัฒนาแอป Firebase เพื่อเพิ่ม Firebase ลงในแอป

ขั้นตอนที่ 2: เพิ่มไลบรารี App Check และเริ่มต้นใช้งาน App Check

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

ขั้นตอนที่ 3: โหลดไลบรารี Maps JS API

  1. โหลดไลบรารี Core, Maps และ Places ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบ Maps JavaScript API Place Class

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

ขั้นตอนที่ 4: เริ่มต้นใช้งาน Places API และ App Check API

  1. เริ่มต้นใช้งาน App Check โดยใช้การกำหนดค่าที่คอนโซล Firebase ให้ไว้
  2. ตรวจสอบว่าคำขอไปยัง Maps JS API มาพร้อมกับโทเค็น App Check ดังนี้
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

ขั้นตอนที่ 5: เปิดใช้การแก้ไขข้อบกพร่อง (ไม่บังคับ)

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

วิธีทดสอบแอปในเครื่อง

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

วิธีเรียกใช้แอปในสภาพแวดล้อม CI

  • สร้าง UUID4 แบบสุ่มจากคอนโซล Firebase
  • เพิ่ม UUID4 เป็นโทเค็นการแก้ไขข้อบกพร่อง แล้วคัดลอกลงในที่เก็บข้อมูลลับที่การทดสอบ CI จะเข้าถึงได้ต่อการทดสอบแต่ละครั้ง
  • ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบ App Check

ขั้นตอนที่ 6: ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

ดูข้อมูลเพิ่มเติมและวิธีการได้ที่เอกสารประกอบ Firebase App Check