Auf dieser Seite erfahren Sie, wie Sie App Check in einer Android-App mit Ihrem benutzerdefinierten App Check-Anbieter aktivieren. Wenn Sie App Check aktivieren, tragen Sie dazu bei, 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, finden Sie weitere Informationen unter Aktivieren von App Check mit Play Integrity auf Android .
Bevor Sie beginnen
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls Sie dies noch nicht getan haben.
Implementieren Sie die serverseitige Logik Ihres benutzerdefinierten App Check-Anbieters .
1. Fügen Sie Ihrer App die App Check-Bibliothek hinzu
Deklarieren Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise app/build.gradle
) die Abhängigkeit für die App Check Android-Bibliothek:
Kotlin+KTX
dependencies {
implementation 'com.google.firebase:firebase-appcheck:17.0.1'
}
Java
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 Echtheitsnachweis benötigt, und sie im Austausch gegen ein App Check-Token an Ihren Token-Erfassungsdienst sendet. Das App Check SDK übernimmt das Token-Caching, also erhalten Sie 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 {
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;
}
}
Implementieren Sie außerdem eine AppCheckProviderFactory
Klasse, die Instanzen Ihrer AppCheckProvider
Implementierung erstellt:
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. 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
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());
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, die sie an Firebase sendet, aber Firebase-Produkte verlangen nicht, dass die Tokens gültig sind, bis Sie die Erzwingung im Abschnitt „App-Check“ der Firebase-Konsole aktivieren.
Überwachen Sie Metriken und aktivieren Sie die Durchsetzung
Bevor Sie die Erzwingung aktivieren, sollten Sie jedoch sicherstellen, dass dadurch Ihre vorhandenen legitimen Benutzer nicht gestört werden. Wenn Sie andererseits eine verdächtige Nutzung Ihrer App-Ressourcen feststellen, sollten Sie die Erzwingung möglicherweise früher aktivieren.
Um diese Entscheidung zu treffen, können Sie sich die App Check-Metriken für die von Ihnen verwendeten Dienste ansehen:
- Überwachen Sie App Check-Anforderungsmetriken für Realtime Database, Cloud Firestore, Cloud Storage und Authentifizierung (Beta).
- Überwachen Sie App Check-Anfragemetriken für Cloud Functions .
App-Check-Erzwingung aktivieren
Wenn Sie verstehen, wie sich App Check auf Ihre Benutzer auswirkt, und Sie fortfahren möchten, können Sie die Erzwingung von App Check aktivieren:
- Aktivieren Sie die Durchsetzung der App-Prüfung für Realtime Database, Cloud Firestore, Cloud Storage und Authentifizierung (Beta).
- Aktivieren Sie die Erzwingung der App-Prüfung für Cloud Functions .
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 Erstellen Sie einen Debug-Build Ihrer App, der den App Check-Debug-Anbieter anstelle eines echten Nachweisanbieters verwendet.
Siehe Verwenden von App Check mit dem Debug-Anbieter auf Android .