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. kullanıma sunduk. Bunun için aşağıdakilerin ikisini de yapmanız gerekir:

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

Başlamadan önce

Varsayılan Play Integrity sağlayıcısı veya özel sağlayıcı.

Arka uç istekleriyle birlikte Uygulama Kontrolü jetonları gönderme

Arka uç isteklerinizin geçerli, süresi dolmamış bir Uygulama Kontrolü jetonu içerdiğinden emin olmak için her isteği getAppCheckToken() çağrısına ekleyin. Uygulama Kontrolü 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 Uygulama Kontrolü jetonları 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();
                        // ...
                    }
                }
        );