В этой статье рассказывается, как включить App Check в приложении для Android, используя собственного поставщика App Check. Включив App Check, вы обеспечите доступ к ресурсам Firebase в вашем проекте только для своего приложения.
Если вы хотите использовать App Check с поставщиком Play Integrity по умолчанию, прочитайте статью Как включить App Check с Play Integrity на Android.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект для Android.
Реализуйте серверную логику собственного поставщика App Check.
1. Добавьте библиотеку App Check в приложение
В файле Gradle на уровне модуля (приложения) (обычно это<project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle) добавьте зависимость для библиотеки App Check для Android. Для управления версиями библиотек рекомендуем использовать Firebase Android BoM.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.2")) // 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") }
Благодаря Firebase Android BoM в вашем приложении всегда будут использоваться совместимые версии библиотек Firebase Android.
(Альтернативный вариант) Добавьте зависимости библиотеки Firebase без использования BoM.
Если вы не хотите использовать Firebase BoM, то должны указать версию каждой библиотеки Firebase в строке зависимости.
Если вы используете в приложении несколько библиотек Firebase, настоятельно рекомендуем управлять их версиями с помощью BoM. Это обеспечит совместимость всех версий.
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:20.0.0") }
2. Реализуйте интерфейсы App Check
Сначала необходимо создать классы, реализующие интерфейсы AppCheckProvider и AppCheckProviderFactory.
Класс AppCheckProvider должен содержать метод getToken(), который собирает информацию, необходимую вашему поставщику App Check для подтверждения подлинности, и отправляет ее в сервис получения токенов в обмен на токен App Check. App Check SDK обрабатывает кеширование токенов, поэтому всегда получайте новый токен в своей реализации getToken().
Kotlin
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); } }
Также реализуйте класс AppCheckProviderFactory, который создает экземпляры вашей реализации AppCheckProvider:
Kotlin
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. Инициализация App Check
Добавьте в приложение следующий код инициализации, чтобы он выполнялся до использования других Firebase SDK:
Kotlin
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
Дальнейшие действия
После установки библиотеки App Check в приложение начните распространять его обновленную версию среди пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check с каждым запросом к Firebase, но продукты Firebase не будут требовать действительных токенов, пока вы не включите принудительное применение в разделе App Check консоли Firebase.
Отслеживайте показатели и включите принудительное применение
Однако прежде чем включить принудительное применение, убедитесь, что это не помешает вашим существующим добросовестным пользователям. С другой стороны, если вы видите подозрительное использование ресурсов приложения, то можете включить принудительное применение раньше.
Чтобы принять решение, вы можете посмотреть показатели App Check для используемых вами сервисов:
- Отслеживайте показатели запросов App Check для Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity для iOS, Maps JavaScript API и Places API (New).
- Отслеживайте показатели запросов App Check для Cloud Functions.
Включить меры App Check
Когда вы поймете, как App Check повлияет на пользователей, и будете готовы продолжить, вы сможете включить принудительное применение App Check:
- Включите принудительное применение App Check для Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity для iOS, Maps JavaScript API и Places API (New).
- Включите принудительное применение App Check для Cloud Functions.
Используйте App Check в средах отладки
Если после регистрации приложения в App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как действительную, например в эмуляторе во время разработки или в среде непрерывной интеграции, вы можете создать отладочную сборку приложения, которая использует отладочный поставщик App Check вместо реального поставщика аттестации.
Подробнее о том, как использовать App Check с отладочным поставщиком на Android…