Beginnen Sie mit der Verwendung von App Check mit einem benutzerdefinierten Anbieter auf Android

Auf dieser Seite erfahren Sie, wie Sie App Check in einer Android-App mithilfe Ihres benutzerdefinierten App Check-Anbieters aktivieren. Wenn Sie App Check aktivieren, stellen Sie sicher, dass nur Ihre App auf die Firebase-Ressourcen Ihres Projekts zugreifen kann.

Wenn Sie App Check mit dem standardmäßigen Play Integrity-Anbieter verwenden möchten, lesen Sie App Check mit Play Integrity auf Android aktivieren .

Bevor Sie beginnen

1. Fügen Sie die App Check-Bibliothek zu Ihrer App hinzu

Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle ) die Abhängigkeit für die App-Prüfung hinzu Android-Bibliothek. Wir empfehlen die Verwendung der Firebase Android BoM zur Steuerung der Bibliotheksversionierung.

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")
}

Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

(Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.

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")
}

Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

(Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.

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. Implementieren Sie die App Check-Schnittstellen

Zunächst müssen Sie Klassen erstellen, die die Schnittstellen AppCheckProvider und AppCheckProviderFactory implementieren.

Ihre AppCheckProvider Klasse muss über eine getToken() Methode verfügen, die alle Informationen sammelt, die Ihr benutzerdefinierter App Check-Anbieter als Authentizitätsnachweis benötigt, und sie im Austausch gegen ein App Check-Token an Ihren Token-Erfassungsdienst sendet. Das App Check SDK übernimmt das Token-Caching. Besorgen Sie sich daher immer ein neues Token in Ihrer Implementierung von 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);
    }
}

Implementieren Sie außerdem eine AppCheckProviderFactory Klasse, die Instanzen Ihrer AppCheckProvider Implementierung erstellt:

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. App-Check initialisieren

Fügen Sie Ihrer App den folgenden Initialisierungscode hinzu, damit sie ausgeführt wird, bevor Sie andere Firebase-SDKs verwenden:

Kotlin+KTX

Firebase.initialize(context)
Firebase.appCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory(),
)

Java

FirebaseApp.initializeApp(/*context=*/ context);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        new YourCustomAppCheckProviderFactory());

Nächste Schritte

Sobald die App Check-Bibliothek in Ihrer App installiert ist, beginnen Sie mit der Verteilung der aktualisierten App an Ihre Benutzer.

Die aktualisierte Client-App beginnt mit dem Senden von App Check-Tokens zusammen mit jeder Anfrage an Firebase. Für Firebase-Produkte müssen die Token jedoch erst gültig sein, wenn Sie die Durchsetzung im Abschnitt „App Check“ der Firebase-Konsole aktivieren.

Überwachen Sie Metriken und aktivieren Sie die Durchsetzung

Bevor Sie die Durchsetzung aktivieren, sollten Sie jedoch sicherstellen, dass Ihre vorhandenen legitimen Benutzer dadurch nicht beeinträchtigt werden. Wenn Sie jedoch feststellen, dass Ihre App-Ressourcen verdächtig genutzt werden, sollten Sie die Durchsetzung möglicherweise früher aktivieren.

Um diese Entscheidung zu treffen, können Sie sich die App Check-Metriken für die von Ihnen genutzten Dienste ansehen:

Aktivieren Sie die Durchsetzung der App-Prüfung

Wenn Sie verstehen, wie sich App Check auf Ihre Benutzer auswirkt, und Sie bereit sind, fortzufahren, können Sie die Durchsetzung von App Check aktivieren:

Verwenden Sie App Check in Debug-Umgebungen

Wenn Sie Ihre App nach der Registrierung für App Check in einer Umgebung ausführen möchten, die App Check normalerweise nicht als gültig einstufen würde, z. B. in einem Emulator während der Entwicklung oder in einer CI-Umgebung (Continuous Integration), können Sie dies tun Erstellen Sie einen Debug-Build Ihrer App, der den App Check-Debug-Anbieter anstelle eines echten Nachweisanbieters verwendet.

Weitere Informationen finden Sie unter „App Check mit dem Debug-Anbieter auf Android verwenden “.