查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Activer App Check dans les applications Flutter

Cette page vous montre comment activer App Check dans une application Flutter, en utilisant les fournisseurs par défaut : SafetyNet sur Android, Device Check sur les plateformes Apple et reCAPTCHA v3 sur le Web. Lorsque vous activez App Check, vous vous assurez que seule votre application peut accéder aux ressources Firebase de votre projet. Voir un aperçu de cette fonctionnalité.

1. Configurez votre projet Firebase

  1. Installez et initialisez FlutterFire si vous ne l'avez pas déjà fait.

  2. Enregistrez vos applications pour utiliser App Check avec les fournisseurs SafetyNet, Device Check et reCAPTCHA dans la section Paramètres du projet > App Check de la console Firebase.

    Vous devez généralement enregistrer toutes les applications de votre projet, car une fois que vous avez activé l'application pour un produit Firebase, seules les applications enregistrées pourront accéder aux ressources principales du produit.

  3. Facultatif : dans les paramètres d'enregistrement de l'application, définissez une durée de vie (TTL) personnalisée pour les jetons App Check émis par le fournisseur. Vous pouvez définir le TTL sur n'importe quelle valeur comprise entre 30 minutes et 7 jours. Lorsque vous modifiez cette valeur, tenez compte des compromis suivants :

    • Sécurité : des durées de vie plus courtes offrent une sécurité renforcée, car elles réduisent la fenêtre dans laquelle un jeton divulgué ou intercepté peut être abusé par un attaquant.
    • Performances : des durées de vie plus courtes signifient que votre application effectuera des attestations plus fréquemment. Étant donné que le processus d'attestation d'application ajoute de la latence aux demandes réseau à chaque fois qu'il est exécuté, une durée de vie courte peut avoir un impact sur les performances de votre application.
    • Quota et coût : des durées de vie plus courtes et des réattestations fréquentes épuisent votre quota plus rapidement et, pour les services payants, coûtent potentiellement plus cher. Voir Quotas et limites .

    Le TTL par défaut est raisonnable pour la plupart des applications. Notez que la bibliothèque App Check actualise les jetons à environ la moitié de la durée TTL.

2. Ajoutez la bibliothèque App Check à votre application

  1. Depuis la racine de votre projet Flutter, exécutez la commande suivante pour installer le plugin :

    flutter pub add firebase_app_check
    
  2. Une fois terminé, reconstruisez votre application Flutter :

    flutter run
    

3. Initialiser App Check

Ajoutez le code d'initialisation suivant à votre application afin qu'elle s'exécute avant d'utiliser des services Firebase tels que Storage, mais après avoir appelé Firebase.initializeApp() ;

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseAppCheck.instance.activate(
    webRecaptchaSiteKey: 'recaptcha-v3-site-key',
  );
  runApp(App());
}

Une fois la bibliothèque App Check installée dans votre application, commencez à distribuer l'application mise à jour à vos utilisateurs.

L'application cliente mise à jour commencera à envoyer des jetons App Check avec chaque demande qu'elle adresse à Firebase, mais les produits Firebase n'exigeront pas que les jetons soient valides tant que vous n'aurez pas activé l'application dans la section App Check de la console Firebase. Voir les deux sections suivantes pour plus de détails.

4. Surveiller les métriques de demande

Maintenant que votre application mise à jour est entre les mains des utilisateurs, vous pouvez activer l'application d'App Check pour les produits Firebase que vous utilisez. Avant de le faire, cependant, vous devez vous assurer que cela ne perturbera pas vos utilisateurs légitimes existants.

Base de données en temps réel, Cloud Firestore et Cloud Storage

Un outil important que vous pouvez utiliser pour prendre cette décision pour la base de données en temps réel, Cloud Firestore et Cloud Storage est l'écran des métriques de demande App Check.

Pour afficher les métriques de demande d'App Check pour un produit, ouvrez la section Paramètres du projet > App Check de la console Firebase. Par exemple:

Capture d'écran de la page des statistiques d'App Check

Les métriques de demande pour chaque produit sont réparties en quatre catégories :

  • Les demandes vérifiées sont celles qui ont un jeton App Check valide. Une fois que vous avez activé l'application d'App Check, seules les demandes de cette catégorie aboutiront.

  • Les demandes client obsolètes sont celles pour lesquelles il manque un jeton App Check. Ces demandes peuvent provenir d'une ancienne version du SDK Firebase avant l'inclusion d'App Check dans l'application.

  • Les requêtes d' origine inconnue sont celles pour lesquelles il manque un jeton App Check et qui ne semblent pas provenir du SDK Firebase. Celles-ci peuvent provenir de requêtes effectuées avec des clés d'API volées ou de requêtes falsifiées effectuées sans le SDK Firebase.

  • Les requêtes non valides sont celles qui ont un jeton App Check non valide, qui peut provenir d'un client non authentique tentant d'usurper l'identité de votre application, ou d'environnements émulés.

La distribution de ces catégories pour votre application doit vous informer lorsque vous décidez d'activer l'application. Voici quelques lignes directrices :

  • Si presque toutes les demandes récentes proviennent de clients vérifiés, envisagez d'activer l'application pour commencer à protéger vos ressources backend.

  • Si une partie importante des demandes récentes proviennent de clients probablement obsolètes, pour éviter de perturber les utilisateurs, envisagez d'attendre que davantage d'utilisateurs mettent à jour votre application avant d'activer l'application. L'application d'App Check sur une application publiée cassera les versions d'application précédentes qui ne sont pas intégrées au SDK App Check.

  • Si votre application n'a pas encore été lancée, vous devez activer l'application App Check immédiatement, car aucun client obsolète n'est utilisé.

Fonctions cloud

Pour Cloud Functions, vous pouvez obtenir des métriques App Check en examinant les journaux de vos fonctions. Chaque invocation d'une fonction appelable émet une entrée de journal structurée comme dans l'exemple suivant :

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Vous pouvez analyser ces métriques dans Google Cloud Console en créant une métrique de compteur basée sur les journaux avec le filtre de métrique suivant :

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Étiquetez la métrique à l'aide du champ jsonPayload.verifications.appCheck .

5. Activer l'application

Pour activer l'application, suivez les instructions pour chaque produit, ci-dessous. Une fois que vous avez activé l'application pour un produit, toutes les demandes non vérifiées pour ce produit seront rejetées.

Base de données en temps réel, Cloud Firestore et Cloud Storage

Pour activer l'application pour la base de données en temps réel, Cloud Firestore (iOS et Android) et Cloud Storage :

  1. Ouvrez la section Paramètres du projet > App Check de la console Firebase.

  2. Développez la vue des métriques du produit pour lequel vous souhaitez activer l'application.

  3. Cliquez sur Appliquer et confirmez votre choix.

Notez qu'il peut s'écouler jusqu'à 10 minutes après l'activation de l'application pour qu'elle prenne effet.

Fonctions cloud

Voir Activer l'application de la vérification des applications pour Cloud Functions .