API-Schlüssel mit App Check schützen

Firebase App Check schützt Aufrufe von Ihrer App an die Google Maps Platform, indem Traffic blockiert wird, der nicht von legitimen Apps stammt. Dazu wird ein Token von einem Bestätigungsanbieter wie reCAPTCHA Enterprise geprüft. Wenn Sie Ihre Apps in App Check einbinden, können Sie sich vor böswilligen Anfragen schützen und Ihnen werden keine Kosten für nicht autorisierte API-Aufrufe in Rechnung gestellt.

Ist App Check das Richtige für mich?

App Check wird in den meisten Fällen empfohlen. In den folgenden Fällen ist App Check jedoch nicht erforderlich oder wird nicht unterstützt:

  • Sie verwenden das ursprüngliche Places SDK. App Check wird nur für das Places SDK (neu) unterstützt.
  • Private oder experimentelle Apps. Wenn Ihre App nicht öffentlich zugänglich ist, ist App Check nicht erforderlich.
  • Wenn Ihre App nur für die Server-zu-Server-Kommunikation verwendet wird, ist App Check nicht erforderlich. Wenn der Server, der mit der Google Maps Platform kommuniziert, jedoch von öffentlichen Clients (z. B. mobilen Apps) verwendet wird, sollten Sie App Check verwenden, um diesen Server zu schützen anstelle der Google Maps Platform.

Übersicht über die Implementierungsschritte

Im Großen und Ganzen sind das die Schritte, die Sie ausführen müssen, um Ihre App in App Check einzubinden:

  1. Fügen Sie Ihrer Anwendung Firebase hinzu.
  2. Fügen Sie die App Check-Bibliothek hinzu und initialisieren Sie sie.
  3. Fügen Sie Ihrer App den Tokenanbieter hinzu.
  4. Initialisieren Sie die Places API und die App Check API.
  5. Aktivieren Sie das Debugging.
  6. Überwachen Sie Ihre App-Anfragen und entscheiden Sie, ob Sie die Erzwingung aktivieren möchten.

Nachdem Sie App Check eingebunden haben, können Sie in der Firebase Console Messwerte zum Backend-Traffic aufrufen. Diese Messwerte enthalten eine Aufschlüsselung der Anfragen danach, ob sie ein gültiges App Check-Token enthalten. Weitere Informationen finden Sie in der Firebase App Check-Dokumentation.

Wenn Sie sicher sind, dass die meisten Anfragen von legitimen Quellen stammen und dass die Nutzer auf die neueste Version Ihrer App aktualisiert haben, die Ihre Implementierung von App Check enthält, können Sie die Erzwingung aktivieren. Wenn die Erzwingung aktiviert ist, lehnt App Check alle Zugriffe ohne gültiges App Check-Token ab.

Überlegungen bei der Planung einer App Check-Einbindung

Hier sind einige Punkte, die Sie bei der Planung der Einbindung berücksichtigen sollten:

  • Einer der von uns empfohlenen Attestierungsanbieter, reCAPTCHA Enterprise,berechnet mehr als 10.000 Bewertungen pro Monat.

    Der andere von uns empfohlene Bestätigungsanbieter, reCAPTCHA v3, hat ein Kontingent, nach dem der Traffic nicht mehr ausgewertet wird.

    Sie können auch einen benutzerdefinierten Bestätigungsanbieter verwenden. Dies ist jedoch ein fortgeschrittener Anwendungsfall. Weitere Informationen finden Sie in der App Check-Dokumentation.

  • Nutzer Ihrer App werden beim Start eine gewisse Latenz feststellen. Danach erfolgt die regelmäßige erneute Bestätigung im Hintergrund und die Nutzer sollten keine Latenz mehr feststellen. Die genaue Latenz beim Start hängt vom ausgewählten Bestätigungsanbieter ab.

    Die Gültigkeitsdauer des App Check-Tokens (Time to Live oder TTL) bestimmt die Häufigkeit der erneuten Bestätigungen. Diese Dauer kann in der Firebase Console konfiguriert werden. Die erneute Bestätigung erfolgt, wenn etwa die Hälfte der TTL abgelaufen ist. Weitere Informationen finden Sie in der Firebase-Dokumentation für Ihren Bestätigungsanbieter.

App in App Check einbinden

Voraussetzungen

  • Eine App, in der die neueste wöchentliche oder vierteljährliche Version der Maps JS API, der Core-Bibliothek und der Places-Bibliothek geladen ist.
  • Ein Cloud-Projekt, in dem die Maps JS API und die Places API (neu) aktiviert sind.
  • Sie müssen Inhaber der App in der Cloud Console sein.
  • Sie benötigen die Projekt-ID der App aus der Cloud Console.

Schritt 1: Firebase zu Ihrer App hinzufügen

Folgen Sie der Anleitung in der Firebase-Entwicklerdokumentation, um Ihrer App Firebase hinzuzufügen.

Schritt 2: App Check-Bibliothek hinzufügen und App Check initialisieren

Firebase bietet Anleitungen für jeden Standardbestätigungsanbieter. In diesen Anleitungen wird beschrieben, wie Sie ein Firebase-Projekt einrichten und Ihrer App die App Check-Bibliothek hinzufügen. Folgen Sie den Codebeispielen, um App Check zu initialisieren.

Schritt 3: Maps JS API-Bibliotheken laden

  1. Laden Sie die Core-, Maps- und Places-Bibliotheken wie im folgenden Snippet gezeigt. Weitere Informationen und eine Anleitung finden Sie in der Dokumentation zur Maps JavaScript API-Klasse „Place“.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

Schritt 4: Places API und App Check API initialisieren

  1. Initialisieren Sie App Check mit der Konfiguration, die von der Firebase Console bereitgestellt wird.
  2. Achten Sie darauf, dass Anfragen an die Maps JS API App Check-Tokens enthalten:
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

Schritt 5: Debugging aktivieren (optional)

Wenn Sie Ihre App lokal entwickeln und testen oder in einer CI-Umgebung (Continuous Integration) ausführen möchten, können Sie ein Debug-Build Ihrer App erstellen, das einen geheimen Debug-Schlüssel verwendet, um gültige App Check-Tokens zu erhalten. So können Sie in Ihrem Debug-Build auf echte Bestätigungsanbieter verzichten.

So testen Sie Ihre App lokal:

  • Aktivieren Sie den Debug-Anbieter für Entwicklungszwecke.
  • Sie erhalten eine automatisch generierte zufällige UUID4 (in der App Check-Dokumentation als _Debug-Token_ bezeichnet) aus den Debug-Logs des SDK. Fügen Sie dieses Token der Firebase Console hinzu.
  • Weitere Informationen und eine Anleitung finden Sie in der App Check-Dokumentation.

So führen Sie Ihre App in einer CI-Umgebung aus:

  • Generieren Sie in der Firebase Console eine zufällige UUID4.
  • Fügen Sie die UUID4 als Debug-Token hinzu und kopieren Sie sie dann in einen geheimen Speicher, auf den die CI-Tests pro Testlauf zugreifen.
  • Weitere Informationen und eine Anleitung finden Sie in der App Check-Dokumentation.

Schritt 6: App-Anfragen überwachen und Erzwingung aktivieren

Bevor Sie die Erzwingung aktivieren, sollten Sie sicherstellen, dass Sie legitime Nutzer Ihrer App nicht stören. Rufen Sie dazu den Bildschirm mit den App Check-Messwerten auf, um zu sehen, wie viel Prozent des Traffics Ihrer App bestätigt, veraltet oder unzulässig sind. Wenn der Großteil des Traffics bestätigt ist, können Sie die Erzwingung aktivieren.

Weitere Informationen und eine Anleitung finden Sie in der Firebase App Check-Dokumentation.