Catch up on everthing we announced at this year's Firebase Summit. Learn more

Protégez les ressources non Firebase avec App Check sur Android

Vous pouvez protéger les ressources non Firebase de votre application, telles que les backends auto-hébergés, avec App Check. Pour ce faire, vous devrez effectuer les deux opérations suivantes :

  • Modifiez votre client d'application pour envoyer un jeton App Check avec chaque demande à votre backend, comme décrit sur cette page.
  • Modifier votre back - end pour exiger une application valide Vérifiez jeton à chaque requête, comme décrit dans Vérifier App Vérifiez jetons à partir d' un back - end personnalisé .

Avant que tu commences

Ajouter App Vérifiez votre application, en utilisant par défaut fournisseur SafetyNet , ou un fournisseur personnalisé .

Envoyer des jetons App Check avec des requêtes backend

Pour vous assurer que vos demandes de back - end incluent valide, restant à courir, App Vérifiez jeton, enveloppez chaque demande dans un appel à getAppCheckToken() . La bibliothèque App Check actualisera le jeton si nécessaire et vous pourrez accéder au jeton dans l'écouteur de réussite de la méthode.

Une fois que vous avez un jeton valide, envoyez-le avec la demande à votre backend. Les détails de la façon dont vous accomplissez ce sont à vous, mais ne pas envoyer App Vérifiez les jetons dans le cadre d'URL, y compris dans les paramètres de la requête, car cela les rend vulnérables aux fuites et l' interception accidentelle. L'approche recommandée consiste à envoyer le jeton dans un en-tête HTTP personnalisé.

Par exemple, si vous utilisez 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);
                        // ...
                    }
                });
    }
}

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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}