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

Proteja recursos não Firebase com App Check no Android

Você pode proteger os recursos não Firebase do seu aplicativo, como back-ends auto-hospedados, com App Check. Para fazer isso, você precisará fazer o seguinte:

  • Modifique seu cliente de aplicativo para enviar um token de verificação de aplicativo junto com cada solicitação para seu back-end, conforme descrito nesta página.
  • Modificar seu backend para exigir uma App válido Verifique token com cada solicitação, como descrito em Verifique App Verifique os tokens de um backend personalizado .

Antes de você começar

Adicionar App Verifique para seu aplicativo, usando o padrão provedor de SafetyNet , ou um provedor personalizado .

Enviar tokens de verificação de aplicativo com solicitações de back-end

Para garantir que seus pedidos de back-end incluem um válido, não expirado, App Verifique forma, envolva cada pedido em uma chamada para getAppCheckToken() . A biblioteca App Check atualizará o token, se necessário, e você pode acessar o token no listener de sucesso do método.

Assim que tiver um token válido, envie-o junto com a solicitação para seu back-end. Os detalhes de como você conseguir isso são até você, mas não enviar App Verifique fichas como parte de URLs, incluindo parâmetros de consulta, pois isso os torna vulneráveis a vazamentos acidentais e intercepção. A abordagem recomendada é enviar o token em um cabeçalho HTTP personalizado.

Por exemplo, se você usar 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)
                // ...
            }
    }
}