Esta página mostra como ativar o App Check em um app Android usando seu provedor personalizado do App Check. Ao ativar o App Check, você ajuda a garantir que apenas seu app possa acessar os recursos do Firebase do seu projeto.
Se você quiser usar o App Check com o provedor Play Integrity padrão, consulte Ativar o App Check com a Play Integrity no Android.
Antes de começar
Adicione o Firebase ao seu projeto Android, caso ainda não tenha feito isso.
Implemente a lógica personalizada do servidor do provedor do App Check.
1. Adicionar a biblioteca do App Check ao seu app
No arquivo do Gradle (geralmente app/build.gradle
) do módulo (nível do app), declare a
dependência da biblioteca Android do App Check:
Kotlin+KTX
dependencies {
implementation 'com.google.firebase:firebase-appcheck:17.0.1'
}
Java
dependencies {
implementation 'com.google.firebase:firebase-appcheck:17.0.1'
}
2. Implementar as interfaces do App Check
Primeiro, você precisa criar classes que implementem as interfaces AppCheckProvider
e AppCheckProviderFactory
.
A classe AppCheckProvider
precisa ter um método getToken()
, que coleta
todas as informações exigidas pelo provedor personalizado do App Check como prova de
autenticidade e as envia ao serviço de aquisição de tokens em troca de um token do App Check. O SDK do App Check processa o armazenamento em cache de tokens. Por causa disso, sempre use
um novo token na implementação do getToken()
.
Kotlin+KTX
class YourCustomAppCheckToken(
private val token: String,
private val expiration: Long
) : AppCheckToken() {
override fun getToken(): String {
return token
}
override fun getExpireTimeMillis(): Long {
return expiration
}
}
class YourCustomAppCheckProvider : AppCheckProvider {
val token: Task<AppCheckToken>
get() {
// Logic to exchange proof of authenticity for an App Check token.
// ...
// Refresh the token early to handle clock skew.
val expMillis: Long = expirationFromServer * 1000 - 60000
// Create AppCheckToken object.
val appCheckToken: AppCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis)
return appCheckToken!
}
}
Java
public class YourCustomAppCheckToken extends AppCheckToken {
private String token;
private long expiration;
YourCustomAppCheckToken(String token, long expiration) {
this.token = token;
this.expiration = expiration;
}
@NonNull
@Override
public String getToken() {
return token;
}
@Override
public long getExpireTimeMillis() {
return expiration;
}
}
public class YourCustomAppCheckProvider implements AppCheckProvider {
@Override
public Task<AppCheckToken> getToken() {
// Logic to exchange proof of authenticity for an App Check token and
// expiration time.
// ...
// Refresh the token early to handle clock skew.
long expMillis = expirationFromServer * 1000 - 60000;
// Create AppCheckToken object.
AppCheckToken appCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis);
return appCheckToken;
}
}
Além disso, implemente uma classe AppCheckProviderFactory
que crie instâncias da implementação
AppCheckProvider
:
Kotlin+KTX
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
fun create(firebaseApp: FirebaseApp): AppCheckProvider {
// Create and return an AppCheckProvider object.
return YourCustomAppCheckProvider(firebaseApp)
}
}
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
@Override
public AppCheckProvider create(FirebaseApp firebaseApp) {
// Create and return an AppCheckProvider object.
return new YourCustomAppCheckProvider(firebaseApp);
}
}
3. Inicializar o App Check
Adicione o seguinte código de inicialização ao app para que ele seja executado antes de usar outros SDKs do Firebase:
Kotlin+KTX
FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance())
Java
FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance());
Próximas etapas
Depois que a biblioteca do App Check estiver instalada no seu app, comece a distribuir o app atualizado para os usuários.
O app cliente atualizado vai começar a enviar tokens do App Check em todas as solicitações feitas ao Firebase, mas os produtos dessa plataforma não exigirão que os tokens sejam válidos até que você ative a aplicação obrigatória na seção "App Check" do Console do Firebase.
Monitorar métricas e ativar a aplicação obrigatória
Antes de ativar a aplicação obrigatória, verifique se isso não vai afetar seus usuários legítimos. Por outro lado, se você perceber um uso suspeito dos recursos do seu app, convém ativar a aplicação obrigatória antes do previsto.
Para tomar essa decisão, analise as métricas do App Check nos serviços usados:
- Monitore as métricas de solicitações do App Check no Realtime Database, Cloud Firestore, Cloud Storage e Authentication (Beta).
- Monitore as métricas de solicitações do App Check no Cloud Functions.
Ativar a aplicação obrigatória do App Check
Assim que você entender como o App Check vai afetar seus usuários, e se estiver tudo pronto para prosseguir com o processo, ative a aplicação obrigatória do App Check:
- Ative a aplicação obrigatória do App Check no Realtime Database, Cloud Firestore, Cloud Storage e Authentication (Beta).
- Ative a aplicação obrigatória do App Check no Cloud Functions.
Usar o App Check em ambientes de depuração
Se, depois de registrar seu aplicativo no App Check, você quiser executá-lo em um ambiente que o App Check normalmente não classificaria como válido, como um emulador durante o desenvolvimento ou de uma integração contínua (CI), será possível criar um build de depuração do seu app que use o provedor de depuração do App Check em vez de um provedor de atestado real.
Consulte Usar o App Check com o provedor de depuração no Android.