Android'de Uygulama Kontrolü'nü kullanarak Firebase dışı kaynakları koruyun

Uygulamanızın kendi bünyesinde barındırılan arka uçlar gibi Firebase dışı kaynaklarını koruyabilirsiniz. App Check ile birlikte. Bunun için aşağıdakilerin ikisini de yapmanız gerekir:

  • Uygulama istemcinizi her istekle birlikte bir App Check jetonu gönderecek şekilde değiştirin arka ucunuza gönderin.
  • Arka ucunuzu her istekte geçerli bir App Check jetonu gerektirecek şekilde değiştirin. Özel arka uçtan App Check jetonlarını doğrulama bölümünde açıklandığı gibi.

Başlamadan önce

Varsayılan ayarlardan birini kullanarak uygulamanıza App Check ekleyin Play Integrity sağlayıcısı veya özel sağlayıcı.

Arka uç istekleriyle App Check jeton gönder

Arka uç isteklerinizin geçerli, süresi dolmamış App Check jetonu içerdiğinden emin olmak için her isteği getAppCheckToken() çağrısına ekleyin. App Check kitaplığı gerekirse jetonu yeniler. Jetona şuradan erişebilirsiniz: dinlemekle geçer.

Geçerli bir jeton edindikten sonra bu jetonu istekle birlikte arka ucunuza gönderin. İlgili içeriği oluşturmak için kullanılan bunu nasıl başaracağınıza ilişkin ayrıntılar size bağlıdır ancak bilgilere Sorgu parametreleri dahil olmak üzere, URL'lerin bir parçası olarak App Check jeton bu cihazlar kazayla sızıntılara ve müdahaleye karşı savunmasız hale gelir. Önerilen jetonun özel bir HTTP başlığında gönderilmesidir.

Örneğin, Güçlendirme özelliğini kullanıyorsanız:

Kotlin+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() {
        Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken ->
            val token = appCheckToken.token
            val apiCall = yourExampleBackendService.exampleData(token)
            // ...
        }
    }
}

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 appCheckToken) {
                        String token = appCheckToken.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(token);
                        // ...
                    }
                });
    }
}

Tekrar oynatma koruması (beta)

Etkinleştirdiğiniz bir uç noktaya istekte bulunurken oynatma koruması, isteği, yerine getLimitedUseAppCheckToken() çağrısıyla sarmalayın getAppCheckToken():

Kotlin+KTX

Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener {
    // ...
}

Java

FirebaseAppCheck.getInstance()
        .getLimitedUseAppCheckToken().addOnSuccessListener(
                new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(AppCheckToken appCheckToken) {
                        String token = appCheckToken.getToken();
                        // ...
                    }
                }
        );