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

Firebase App Check ให้การปกป้องการเรียกใช้จากแอปของคุณไปยังแพลตฟอร์ม Google Maps โดยการบล็อกการเข้าชมที่มาจากแหล่งที่มาที่ไม่ใช่แอปที่ถูกต้อง โดยการตรวจสอบโทเค็นจากผู้ให้บริการการรับรอง เช่น Play Integrity การผสานรวมแอปกับ 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 แนะนำจะไม่ทำงานในอุปกรณ์ที่ผู้ให้บริการการรับรองพิจารณาว่าถูกบุกรุกหรือไม่น่าเชื่อถือ หากต้องการรองรับอุปกรณ์ดังกล่าว ให้ติดตั้งใช้งานบริการรับรองที่กำหนดเอง ดูข้อมูลเพิ่มเติมได้ที่วิธีการ

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

ขั้นตอนโดยสังเขปในการผสานรวมแอปกับ App Check มีดังนี้

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

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

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

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

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

  • ผู้ให้บริการการรับรองที่เราแนะนำอย่าง Play Integrity มีขีดจำกัดการเรียกใช้รายวันสำหรับระดับการใช้งาน API มาตรฐาน ดูข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดการโทรได้ที่หน้าการตั้งค่าในเอกสารประกอบสำหรับนักพัฒนาแอปเกี่ยวกับความสมบูรณ์ของ Google Play

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

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

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

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

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

  • แอปที่ผสานรวม Places SDK เวอร์ชัน 4.1 ขึ้นไป
  • ลายนิ้วมือ SHA-256 ของแอป
  • ชื่อแพ็กเกจของแอป
  • คุณต้องเป็นเจ้าของแอปในคอนโซลระบบคลาวด์
  • คุณจะต้องมีรหัสโปรเจ็กต์ของแอปจากคอนโซล Cloud

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

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

ขั้นตอนที่ 2: เพิ่มคลัง App Check และเริ่มต้น App Check

ดูข้อมูลเกี่ยวกับการใช้ Play Integrity ซึ่งเป็นผู้ให้บริการตรวจสอบโดยค่าเริ่มต้นได้ที่เริ่มต้นใช้งาน App Check ด้วย Play Integrity ใน Android

  1. ผสานรวม Places SDK เข้ากับแอป หากยังไม่ได้ดำเนินการ
  2. ถัดไป ให้เริ่มต้นApp Check และไคลเอ็นต์ Places

    // Initialize App Check
    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());
      
    // Initialize Places SDK
    Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
    PlacesClient client = Places.createClient(context);.

ขั้นตอนที่ 3: เพิ่มผู้ให้บริการโทเค็น

หลังจากเริ่มต้น Places API แล้ว ให้เรียกใช้ setPlacesAppCheckTokenProvider() เพื่อตั้งค่า PlacesAppCheckTokenProvider

Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
Places.setPlacesAppCheckTokenProvider(new TokenProvider());
PlacesClient client = Places.createClient(context);.

ต่อไปนี้คือตัวอย่างการใช้งานอินเทอร์เฟซเครื่องมือรับข้อมูลโทเค็น

  /** Sample client implementation of App Check token fetcher interface. */
  static class TokenProvider implements PlacesAppCheckTokenProvider {
    @Override
    public ListenableFuture<String> fetchAppCheckToken() {
      SettableFuture<String> future = SettableFuture.create();
      FirebaseAppCheck.getInstance()
          .getAppCheckToken(false)
          .addOnSuccessListener(
              appCheckToken -> {
                future.set(appCheckToken.getToken());
              })
          .addOnFailureListener(
              ex -> {
                future.setException(ex);
              });

      return future;
    }
  }

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

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

วิธีเรียกใช้แอปในโปรแกรมจำลองหรือในอุปกรณ์ทดสอบ

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

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

  • สร้างโทเค็นแก้ไขข้อบกพร่องในคอนโซล Firebase แล้วเพิ่มลงในที่เก็บคีย์ที่ปลอดภัยของระบบ CI
  • เพิ่มคลัง App Check ลงในไฟล์ build.gradle
  • กำหนดค่าตัวแปรการสร้าง CI ให้ใช้โทเค็นแก้ไขข้อบกพร่อง
  • ตัดโค้ดในคลาสทดสอบที่ต้องใช้โทเค็น App Check ด้วย DebugAppCheckTestHelper
  • ดูข้อมูลและวิธีการเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ App Check

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

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

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