App Check mit dem Anbieter für die Fehlerbehebung auf Android-Geräten verwenden

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

Debug-Anbieter in einem Emulator verwenden

So verwenden Sie den Debug-Anbieter, während Sie Ihre App interaktiv in einem Emulator ausführen (z. B. während der Entwicklung):

  1. Fügen Sie in der Gradle-Datei Ihres Moduls (auf Anwendungsebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die App Check Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Bibliotheksversionierung zu steuern.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    Mit der Firebase Android BoM, haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)   Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

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

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:19.0.2")
    }

  2. Konfigurieren Sie in Ihrem Debug-Build App Check so, dass die Debug-Anbieter Factory verwendet wird:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Starten Sie die App und lösen Sie einen Aufruf eines Firebase-Backend-Dienstes aus. Ein lokales Debug-Token wird protokolliert, wenn das SDK versucht, eine Anfrage an das Backend zu senden. Beispiel:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. Rufen Sie in der Firebase Konsole Sicherheit > App Check auf.

  5. Registrieren Sie das gerade protokollierte Debug-Token.

    1. Suchen Sie auf dem Tab Apps nach Ihrer App.
    2. Wählen Sie im Überlaufmenü Ihrer App die Option Debug-Tokens verwalten aus.
    3. Folgen Sie der Anleitung auf dem Bildschirm, um Ihr Debug-Token zu registrieren.

    Screenshot des Menüpunkts „Debug-Tokens verwalten“

Nachdem Sie das Token registriert haben, akzeptieren die Firebase-Backend-Dienste es als gültig.

Da dieses Token den Zugriff auf Ihre Firebase-Ressourcen ohne gültiges Gerät ermöglicht, ist es wichtig, dass Sie es privat halten. Übertragen Sie es nicht in ein öffentliches Repository und widerrufen Sie es sofort in der Firebase Konsole, wenn ein registriertes Token kompromittiert wird.

Debug-Anbieter für Unittests in einer CI-Umgebung verwenden

So verwenden Sie den Debug-Anbieter für Unittests in einer Continuous Integration-Umgebung (CI):

  1. Rufen Sie in der Firebase Konsole Sicherheit > App Check auf.

  2. Erstellen Sie ein Debug-Token. Sie benötigen dieses Token im nächsten Schritt.

    1. Suchen Sie auf dem Tab Apps nach Ihrer App.
    2. Wählen Sie im Überlaufmenü Ihrer App die Option Debug-Tokens verwalten aus.
    3. Folgen Sie der Anleitung auf dem Bildschirm, um ein neues Debug-Token zu erstellen.

    Da dieses Token den Zugriff auf Ihre Firebase-Ressourcen ohne gültiges Gerät ermöglicht, ist es wichtig, dass Sie es privat halten. Übertragen Sie es nicht in ein öffentliches Repository und widerrufen Sie es sofort in der Firebase Konsole, wenn ein registriertes Token kompromittiert wird.

    Screenshot des Menüpunkts „Debug-Tokens verwalten“

  3. Fügen Sie das gerade erstellte Debug-Token dem sicheren Schlüsselspeicher Ihres CI-Systems hinzu (z. B. verschlüsselte Secrets von GitHub Actions oder verschlüsselte Variablen von Travis CI).

  4. Konfigurieren Sie Ihr CI-System gegebenenfalls so, dass Ihr Debug-Token in der CI-Umgebung als Umgebungsvariable verfügbar ist. Geben Sie der Variablen einen Namen wie APP_CHECK_DEBUG_TOKEN_FROM_CI.

  5. Fügen Sie in der Gradle-Datei Ihres Moduls (auf Anwendungsebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die App Check Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Bibliotheksversionierung zu steuern.

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
    
        // 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-debug")
    }

    Mit der Firebase Android BoM, haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)   Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Hinweis: Wenn Sie in Ihrer App mehrere Firebase-Bibliotheken verwenden, empfehlen wir dringend, die BoM zur Verwaltung 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-debug:19.0.2")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
    
        // 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-debug")
    }

    Mit der Firebase Android BoM, haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)   Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Hinweis: Wenn Sie in Ihrer App mehrere Firebase-Bibliotheken verwenden, empfehlen wir dringend, die BoM zur Verwaltung 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-debug:19.0.2")
    }

  6. Fügen Sie der Konfiguration Ihrer CI-Build-Variante Folgendes hinzu:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  7. Verwenden Sie in Ihren Testklassen DebugAppCheckTestHelper, um Code zu umschließen, der ein App Check Token benötigt:

    Kotlin

    @RunWith(AndroidJunit4::class)
    class MyTests {
        private val debugAppCheckTestHelper =
            DebugAppCheckTestHelper.fromInstrumentationArgs()
    
        @Test
        fun testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider {
                // Test code that requires a debug AppCheckToken.
            }
        }
    
        @Test
        fun testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                FirebaseApp.getInstance("nonDefaultApp")
            ) {
                // Test code that requires a debug AppCheckToken.
            }
        }
    }
    

    Java

    @RunWith(AndroidJunit4.class)
    public class YourTests {
        private final DebugAppCheckTestHelper debugAppCheckTestHelper =
                DebugAppCheckTestHelper.fromInstrumentationArgs();
    
        @Test
        public void testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(() -> {
                // Test code that requires a debug AppCheckToken.
            });
        }
    
        @Test
        public void testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                    FirebaseApp.getInstance("nonDefaultApp"),
                    () -> {
                        // Test code that requires a debug AppCheckToken.
                    });
        }
    }
    

Wenn Ihre App in einer CI-Umgebung ausgeführt wird, akzeptieren die Firebase-Backend-Dienste das gesendete Token als gültig.