ใช้ App Check เพื่อรักษาความปลอดภัย Navigation SDK สำหรับ Android
Firebase App Check ช่วยปกป้องการเรียกจากแอปของคุณไปยัง Google Maps Platform โดยการบล็อกการเข้าชมที่มาจากแหล่งที่มาอื่นที่ไม่ใช่แอปที่ถูกต้องตามกฎหมายของคุณ โดยจะดำเนินการนี้ด้วยการขอให้ผู้ให้บริการยืนยันตัวตน เช่น Play Integrity ประเมินความถูกต้องของแอปหรืออุปกรณ์ เมื่อผสานรวมแอปกับ App Check คุณจะเพิ่มการป้องกันคำขอที่เป็นอันตรายและไม่ได้รับอนุญาต ซึ่งจะช่วยปกป้องการเรียกเก็บเงินของคุณจากการเรียกเก็บเงินที่ไม่ได้รับอนุญาต นอกจากนี้ App Check ยังปรับปรุงการรายงานการหยุดชะงักแบบเรียลไทม์ในระบบนิเวศของแอปสำหรับยานพาหนะอย่างมาก ซึ่งเป็นประโยชน์ต่อผู้ขับขี่ทุกคนที่ใช้แอปของคุณ ดูข้อมูลเพิ่มเติมได้ที่ การรายงานการหยุดชะงัก
เหตุใดจึงควรใช้ App Check
App Check จะปกป้อง Navigation SDK สำหรับ Android ใน 2 ส่วนที่แตกต่างกัน ได้แก่ ฟังก์ชันการทำงานหลักของการนำทางและการรายงานการหยุดชะงัก
การนำทาง
App Check ช่วยบล็อกคำขอหลักของ Navigation SDK สำหรับ Android จากแหล่งที่มาที่เป็นอันตรายหรือไม่ได้รับอนุญาต ซึ่งเป็นประโยชน์ต่อคุณโดยตรงด้วยการปกป้องโปรเจ็กต์จากการฉ้อโกงในการเรียกเก็บเงินและการใช้โควต้าจนหมด
การรายงานการหยุดชะงัก
เราขอแนะนำให้ใช้ App Check หากแอปของคุณรองรับการรายงานการหยุดชะงักแบบเรียลไทม์และความสามารถในการโหวต การเปิดใช้ App Check จะช่วยให้ผู้ขับขี่ได้รับเส้นทางที่แม่นยำที่สุดซึ่งพิจารณาจากความคิดเห็นแบบเรียลไทม์ทั้งหมด
เหตุผลที่ App Check มีความสำคัญต่อการรายงาน
- เกณฑ์ความน่าเชื่อถือสูงสำหรับการปิด: เหตุการณ์ที่ส่งผลต่อเส้นทาง เช่น การปิดถนน อาจเปลี่ยนลักษณะการทำงานของการกำหนดเส้นทางสำหรับผู้ขับขี่ทุกคนอย่างมาก โครงสร้างพื้นฐานการกลั่นกรองของ Google สำหรับการหยุดชะงักเนื่องจากการปิดถนนอาศัยสัญญาณความสมบูรณ์ของอุปกรณ์และแอปที่แข็งแกร่งเพื่อปกป้องแผนที่จากการก่อกวน สแปม หรือการรายงานที่ไม่ถูกต้อง
- วิธีที่ App Check ตรวจสอบรายงาน: รายงานและการโหวตของผู้ใช้ที่ส่งจาก Navigation SDK สำหรับ Android จะมีโทเค็น App Check ซึ่งแบ็กเอนด์ของ Google ใช้เพื่อตรวจสอบความถูกต้องของความคิดเห็น เพิ่มระดับความน่าเชื่อถือ และอนุญาตให้ประเมินผลกระทบต่อแผนที่สด
- ผลกระทบของการละเว้น App Check: ระบบจะประเมินรายงานที่ส่งโดยไม่มีโทเค็น App Check ที่ถูกต้องภายใต้โมเดลความน่าเชื่อถือที่ต่ำกว่า และอาจประมวลผลเป็นสัญญาณเงียบเท่านั้น ซึ่งหมายความว่าแม้ว่าผู้ใช้จะยังคงรายงานและโหวตได้ แต่รายงานของผู้ใช้มีแนวโน้มที่จะมองเห็นได้น้อยลงในแผนที่ หรือส่งผลต่อเส้นทางของผู้ขับขี่รายอื่น และจะต้องมีการตรวจสอบเพิ่มเติม
App Check เหมาะกับฉันไหม
เราขอแนะนำให้ใช้ App Check ในกรณีส่วนใหญ่ แต่ไม่จำเป็นต้องใช้หรือระบบไม่รองรับ App Check ในสถานการณ์ต่อไปนี้
- แอปส่วนตัวหรือแอปทดลอง: หากแอปของคุณไม่สามารถเข้าถึงได้แบบสาธารณะ ก็ไม่จำเป็นต้องใช้ App Check
- อุปกรณ์ที่ถูกบุกรุก: ผู้ให้บริการยืนยันตัวตนที่เราแนะนำจะป้องกันไม่ให้ Navigation SDK สำหรับ Android ทำงานในอุปกรณ์ที่ไม่น่าเชื่อถือ เช่น โทรศัพท์ที่รูทหรือเจลเบรคแล้ว หากต้องการรองรับอุปกรณ์เหล่านี้ ให้ติดตั้งใช้งานผู้ให้บริการยืนยันตัวตนที่กำหนดเอง
- อุปกรณ์ Android ที่ไม่ใช่ GMS: อุปกรณ์ Android ต้องใช้ Google Mobile Services (GMS) สำหรับ Play Integrity หากคุณวางแผนที่จะรองรับอุปกรณ์ Android ที่ไม่ใช่ GMS ให้ติดตั้งใช้งานผู้ให้บริการยืนยันตัวตนที่กำหนดเอง
ภาพรวมของขั้นตอนการติดตั้งใช้งาน
โดยรวมแล้ว คุณจะต้องทำตามขั้นตอนต่อไปนี้เพื่อผสานรวมแอปกับ App Check
- เพิ่ม Firebase ไปยังแอป
- เพิ่มไลบรารี App Check และเริ่มต้น App Check
- เพิ่มผู้ให้บริการโทเค็น ขั้นตอนนี้จะเรียกใช้ผู้ให้บริการยืนยันตัวตนที่คุณเลือกเพื่อยืนยันความสมบูรณ์ของอุปกรณ์หรือแอป
- เริ่มต้น Navigation และ App Check API
- เปิดใช้การแก้ไขข้อบกพร่อง ซึ่งมีประโยชน์ระหว่างการพัฒนาหรือในสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI)
- ตรวจสอบคำขอของแอปก่อนเปิดใช้การบังคับใช้ วิธีนี้จะช่วยให้คุณบังคับใช้ App Check ได้อย่างราบรื่นโดยไม่ขัดขวางผู้ใช้
ข้อควรพิจารณาเมื่อวางแผนการผสานรวม App Check
- โควต้าผู้ให้บริการยืนยันตัวตน: ผู้ให้บริการยืนยันตัวตนที่เราแนะนำ ซึ่งก็คือ Play Integrity มีขีดจำกัดการเรียกใช้รายวันสำหรับระดับการใช้งาน Standard API ดูข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดการเรียกใช้ได้ที่หน้า การตั้งค่า ในเอกสารประกอบสำหรับนักพัฒนาแอป Google Play Integrity
- เวลาในการเริ่มต้น: ในสถานการณ์ส่วนใหญ่ ผู้ใช้จะไม่พบความหน่วงระหว่างการใช้งานปกติ เนื่องจากระบบจะแคชโทเค็น App Check ไว้ในอุปกรณ์ ระบบจะรีเฟรชโทเค็น App Check โดยอัตโนมัติในเบื้องหลังก่อนที่โทเค็นจะหมดอายุ เพื่อรักษาประสิทธิภาพการทำงานที่ราบรื่น อย่างไรก็ตาม หากไม่มีโทเค็น App Check ที่ถูกต้อง ผู้ใช้แอปจะพบความหน่วงในการเริ่มต้น เช่น ความหน่วงนี้จะเกิดขึ้นระหว่างการเริ่มต้นแบบเย็นเมื่อโทเค็นที่แคชไว้หมดอายุหรือหายไป
- TTL ของโทเค็น: Time to Live (TTL) จะกำหนดระยะเวลาที่โทเค็น App Check จะใช้งานได้ก่อนที่จะต้องรีเฟรช คุณสามารถกำหนดค่าระยะเวลานี้ได้ตั้งแต่ 30 นาทีถึง 7 วันในคอนโซล Firebase เราขอแนะนำให้ใช้ระยะเวลา 1 ชั่วโมงเป็นค่าพื้นฐานที่ปลอดภัย แต่ SDK จะพยายามรีเฟรชในเบื้องหลังโดยอัตโนมัติที่ประมาณครึ่งหนึ่งของระยะเวลา TTL ดูวิธีการทีละขั้นตอนในคอนโซลได้ในเอกสารประกอบ Firebase App Check
ผสานรวมแอปกับ App Check
ข้อกำหนดเบื้องต้นและข้อกำหนด
- แอปที่ติดตั้ง Navigation SDK สำหรับ Android เวอร์ชัน 7.9 ขึ้นไป
- ลายนิ้วมือของใบรับรอง SHA-256 ของแอป
- ชื่อแพ็กเกจของแอป
- คุณต้องเป็นเจ้าของแอปในคอนโซล Google Cloud
- รหัสโปรเจ็กต์ของแอปจากคอนโซล Google Cloud
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอป
ทำตาม วิธีการในเอกสารประกอบสำหรับนักพัฒนาแอป Firebase เพื่อเพิ่ม Firebase ไปยังแอป เพิ่มไฟล์ google-services.json ลงในไดเรกทอรีระดับแอปของโปรเจ็กต์
ขั้นตอนที่ 2: เพิ่มไลบรารี App Check และเริ่มต้น App Check
เพิ่มทรัพยากร Dependency ของ App Check ลงในไฟล์ build.gradle ของแอป
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
เริ่มต้น App Check ในคลาส Application หรือกิจกรรมหลัก
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
ขั้นตอนที่ 3: เพิ่มผู้ให้บริการโทเค็น
สร้างการติดตั้งใช้งานอินเทอร์เฟซ MapsAppCheckTokenProvider ผู้ให้บริการรายนี้จะดึงข้อมูลโทเค็น App Check จาก Firebase App Check แบบไม่พร้อมกันและส่งโทเค็นไปยังสแต็กเครือข่าย Navigation SDK สำหรับ Android โดยใช้ MapsAppCheckTokenCallback
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
ขั้นตอนที่ 4: เริ่มต้น Navigation และ App Check API
เริ่มต้น Navigation SDK สำหรับ Android และลงทะเบียนอินสแตนซ์ผู้ให้บริการโทเค็นแบบรวมโดยใช้ MapsApiSettings.setAppCheckTokenProvider()
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
ขั้นตอนที่ 5: เปิดใช้การแก้ไขข้อบกพร่อง (ไม่บังคับ)
หลังจากบังคับใช้ App Check สำหรับ Navigation SDK สำหรับ Android แล้ว ฟีเจอร์ของแอปที่ขึ้นอยู่กับ Navigation SDK สำหรับ Android จะไม่ทำงานในโปรแกรมจำลองหรือจากสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI) เนื่องจากสภาพแวดล้อมเหล่านี้ไม่ผ่านเกณฑ์เป็นอุปกรณ์ที่ถูกต้อง หากต้องการเรียกใช้แอปในสภาพแวดล้อมเหล่านี้ระหว่างการพัฒนาและการทดสอบ คุณต้องสร้างบิลด์การแก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการการแก้ไขข้อบกพร่องของ App Check แทนผู้ให้บริการยืนยันตัวตนเวอร์ชันที่ใช้งานจริง
- เพิ่มทรัพยากร Dependency ของผู้ให้บริการการแก้ไขข้อบกพร่องลงในไฟล์
build.gradleของแอปGroovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- กำหนดค่า App Check ให้ใช้ Factory ของผู้ให้บริการการแก้ไขข้อบกพร่องในบิลด์การแก้ไขข้อบกพร่อง
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- เปิดแอปในโปรแกรมจำลองหรืออุปกรณ์การแก้ไขข้อบกพร่อง App Check จะพิมพ์โทเค็นการแก้ไขข้อบกพร่องในเครื่องลงในเอาต์พุต Logcat
- คัดลอกและลงทะเบียนโทเค็นการแก้ไขข้อบกพร่องนี้ในคอนโซล Firebase ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบของผู้ให้บริการการแก้ไขข้อบกพร่องของ Firebase App Check
ขั้นตอนที่ 6: ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้
ก่อนเปิดใช้การบังคับใช้ ให้ตรวจสอบคำขอของแอปเพื่อให้แน่ใจว่าคุณจะไม่ขัดขวางผู้ใช้ที่ถูกต้อง
- ไปที่หน้าจอเมตริก App Check ในคอนโซล Firebase เพื่อดูเปอร์เซ็นต์การเข้าชมที่ยืนยันแล้วเทียบกับการเข้าชมที่ยังไม่ยืนยัน
- เมื่อแน่ใจว่าการเข้าชมส่วนใหญ่ได้รับการยืนยันแล้วและผู้ใช้ที่ถูกต้องได้อัปเดตเป็นแอปเวอร์ชันที่มีการติดตั้งใช้งาน App Check แล้ว ให้เปิดใช้การบังคับใช้
- เมื่อเปิดใช้การบังคับใช้แล้ว App Check จะปฏิเสธการเข้าชมทั้งหมดที่ไม่มีโทเค็น App Check ที่ถูกต้อง