Ta strona pokazuje, jak włączyć Sprawdzanie aplikacji w aplikacji na Androida przy użyciu niestandardowego dostawcy Sprawdzania aplikacji . Włączając Sprawdzanie aplikacji, pomagasz upewnić się, że tylko Twoja aplikacja ma dostęp do zasobów Firebase Twojego projektu.
Jeśli chcesz używać Sprawdzania aplikacji z domyślnym dostawcą Play Integrity, zobacz Włączanie sprawdzania aplikacji z Play Integrity na Androida .
Zanim zaczniesz
Dodaj Firebase do swojego projektu na Androida, jeśli jeszcze tego nie zrobiłeś.
Zaimplementuj logikę po stronie serwera niestandardowego dostawcy sprawdzania aplikacji .
1. Dodaj bibliotekę App Check do swojej aplikacji
W pliku Gradle modułu (na poziomie aplikacji) (zwykle<project>/<app-module>/build.gradle.kts
lub <project>/<app-module>/build.gradle
) dodaj zależność dla sprawdzania aplikacji Biblioteka Androida. Zalecamy używanie Firebase Android BoM do kontrolowania wersji bibliotek. Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the App Check library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-ktx") }
Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać ze zgodnych wersji bibliotek Firebase Android.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM
Jeśli zdecydujesz się nie używać BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.
Pamiętaj, że jeśli używasz w swojej aplikacji wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
dependencies { // Add the dependency for the App Check library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-ktx:17.0.1") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the App Check library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck") }
Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze korzystać ze zgodnych wersji bibliotek Firebase Android.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM
Jeśli zdecydujesz się nie używać BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.
Pamiętaj, że jeśli używasz w swojej aplikacji wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
dependencies { // Add the dependency for the App Check library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck:17.0.1") }
2. Zaimplementuj interfejsy App Check
Najpierw musisz utworzyć klasy, które implementują interfejsy AppCheckProvider
i AppCheckProviderFactory
.
Twoja klasa AppCheckProvider
musi mieć metodę getToken()
, która zbiera wszelkie informacje wymagane przez niestandardowego dostawcę sprawdzania aplikacji jako dowód autentyczności i wysyła je do usługi pozyskiwania tokenów w zamian za token sprawdzania aplikacji. Zestaw App Check SDK obsługuje buforowanie tokenów, więc zawsze otrzymuj nowy token w swojej implementacji getToken()
.
Kotlin+KTX
class YourCustomAppCheckToken( private val token: String, private val expiration: Long, ) : AppCheckToken() { override fun getToken(): String = token override fun getExpireTimeMillis(): Long = expiration } class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider { override fun getToken(): Task<AppCheckToken> { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. val expMillis = expirationFromServer * 1000L - 60000L // Create AppCheckToken object. val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis) return Tasks.forResult(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 { public YourCustomAppCheckProvider(FirebaseApp firebaseApp) { // ... } @NonNull @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 * 1000L - 60000L; // Create AppCheckToken object. AppCheckToken appCheckToken = new YourCustomAppCheckToken(tokenFromServer, expMillis); return Tasks.forResult(appCheckToken); } }
Zaimplementuj również klasę AppCheckProviderFactory
, która tworzy instancje twojej implementacji AppCheckProvider
:
Kotlin+KTX
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory { override fun create(firebaseApp: FirebaseApp): AppCheckProvider { // Create and return an AppCheckProvider object. return YourCustomAppCheckProvider(firebaseApp) } }
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory { @NonNull @Override public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) { // Create and return an AppCheckProvider object. return new YourCustomAppCheckProvider(firebaseApp); } }
3. Zainicjuj sprawdzanie aplikacji
Dodaj następujący kod inicjujący do swojej aplikacji, aby działała przed użyciem jakichkolwiek innych pakietów SDK Firebase:
Kotlin+KTX
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
Następne kroki
Gdy biblioteka sprawdzania aplikacji zostanie zainstalowana w Twojej aplikacji, rozpocznij dystrybucję zaktualizowanej aplikacji do użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny sprawdzania aplikacji wraz z każdym żądaniem wysyłanym do Firebase, ale produkty Firebase nie będą wymagać, aby tokeny były ważne, dopóki nie włączysz wymuszania w sekcji Sprawdzanie aplikacji w konsoli Firebase.
Monitoruj metryki i włączaj egzekwowanie
Zanim jednak włączysz wymuszanie, upewnij się, że nie zakłóci to działania Twoich obecnych legalnych użytkowników. Z drugiej strony, jeśli zauważysz podejrzane użycie zasobów aplikacji, warto wcześniej włączyć wymuszanie.
Aby pomóc w podjęciu tej decyzji, możesz przejrzeć dane Sprawdzania aplikacji dotyczące usług, z których korzystasz:
- Monitoruj metryki żądań sprawdzania aplikacji dla bazy danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i uwierzytelniania (beta).
- Monitoruj metryki żądań sprawdzania aplikacji dla Cloud Functions .
Włącz wymuszanie sprawdzania aplikacji
Gdy zrozumiesz, w jaki sposób Sprawdzanie aplikacji wpłynie na Twoich użytkowników i będziesz gotowy do kontynuowania, możesz włączyć wymuszanie Sprawdzania aplikacji:
- Włącz wymuszanie sprawdzania aplikacji dla bazy danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i uwierzytelniania (beta).
- Włącz wymuszanie sprawdzania aplikacji dla Cloud Functions .
Użyj sprawdzania aplikacji w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji do kontroli aplikacji chcesz uruchomić aplikację w środowisku, którego kontrola aplikacji normalnie nie sklasyfikowałaby jako ważne, na przykład emulator podczas opracowywania lub ze środowiska ciągłej integracji (CI), możesz utwórz kompilację debugowania swojej aplikacji, która korzysta z dostawcy debugowania sprawdzania aplikacji zamiast prawdziwego dostawcy zaświadczeń.
Zobacz Używanie sprawdzania aplikacji z dostawcą debugowania w systemie Android .