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

Proteja los recursos que no son de Firebase con App Check en Android

Puedes proteger los recursos de tu aplicación que no son de Firebase, como los backends autohospedados, con App Check. Para hacerlo, deberá realizar las dos acciones siguientes:

  • Modifique su cliente de aplicación para enviar un token de verificación de aplicación junto con cada solicitud a su backend, como se describe en esta página.
  • Modificar su base de requerir una aplicación válida Compruebe símbolo con cada solicitud, como se describe en Verificar la aplicación Verificar fichas de un motor de costumbre .

Antes de que empieces

Añadir App cheque a su aplicación, ya sea usando el predeterminado proveedor de SafetyNet , o un proveedor personalizado .

Enviar tokens de App Check con solicitudes de backend

Para garantizar que sus peticiones de back-end incluyen un válido y vigente, App Check modo, envolver cada solicitud en una llamada a getAppCheckToken() . La biblioteca App Check actualizará el token si es necesario, y puede acceder al token en el detector de éxito del método.

Una vez que tenga un token válido, envíelo junto con la solicitud a su backend. Los detalles de cómo se logra esto son de usted, pero no envían App Verificar fichas como parte de la URL, incluso en los parámetros de consulta, ya que esto los hace vulnerables a la fuga accidental e intercepción. El enfoque recomendado es enviar el token en un encabezado HTTP personalizado.

Por ejemplo, si usa 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)
                // ...
            }
    }
}