Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

ปกป้องทรัพยากรที่ไม่ใช่ Firebase ด้วย App Check บน Android

คุณปกป้องทรัพยากรที่ไม่ใช่ Firebase ของแอปได้ เช่น แบ็กเอนด์ที่โฮสต์เองด้วย App Check ในการทำเช่นนั้น คุณจะต้องทำทั้งสองอย่างต่อไปนี้:

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

ก่อนจะเริ่ม

เพิ่มเช็ค App แอปของคุณโดยใช้ค่าเริ่มต้น ให้บริการ SafetyNet หรือ ผู้ให้บริการที่กำหนดเอง

ส่งโทเค็นตรวจสอบแอปพร้อมคำขอแบ็กเอนด์

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

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

ตัวอย่างเช่น หากคุณใช้ Retrofit:

Java

public class ApiWithAppCheckExample {
    private interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        Call<List<String>> exampleData(
                @Header("X-Firebase-AppCheck") String appCheckToken);
    }

    YourExampleBackendService yourExampleBackendService = new Retrofit.Builder()
            .baseUrl("https://yourbackend.example.com/")
            .build()
            .create(YourExampleBackendService.class);

    public void callApiExample() {
        FirebaseAppCheck.getInstance()
                .getAppCheckToken(false)
                .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(@NonNull AppCheckToken tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}

คอตลิน+KTX

class ApiWithAppCheckExample {
    interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        fun exampleData(
            @Header("X-Firebase-AppCheck") appCheckToken: String
        ): Call<List<String>>
    }

    var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder()
        .baseUrl("https://yourbackend.example.com/")
        .build()
        .create(YourExampleBackendService::class.java)

    fun callApiExample() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}