Catch up on everthing we announced at this year's Firebase Summit. Learn more

Activer App Check avec App Attest sur les plateformes Apple

Cette page vous montre comment activer App Check dans une application Apple, à l'aide du fournisseur App Attest intégré. 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é.

App Vérifiez les utilisations App Attest pour vérifier que les demandes de services Firebase viennent de votre application authentique. App Check utiliser ne pas encore App Certifier pour analyser le risque de fraude .

Si vous souhaitez utiliser App Vérifiez avec votre propre fournisseur personnalisé, reportez - vous mettre en œuvre une coutume App fournisseur de vérification .

1. Configurez votre projet Firebase

  1. Vous aurez besoin de Xcode 12.5+ pour utiliser App Attest.

  2. Ajouter Firebase à votre projet d' Apple si vous ne l' avez pas déjà fait.

  3. Enregistrez vos applications à utiliser App Check avec le fournisseur App Attest dans les Paramètres du projet> App Vérifiez la section 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 backend du produit.

  4. Facultatif: Dans les paramètres d'enregistrement d'applications, définir un à temps en direct sur mesure (TTL) pour App Check jetons é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 une attestation plus fréquemment. Étant donné que le processus d'attestation d'application ajoute de la latence aux requêtes réseau à chaque fois qu'il est exécuté, une courte durée de vie 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 de 1 heure 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. Ajouter la dépendance pour App Vérifiez votre projet Podfile :

    pod 'Firebase/AppCheck'

    Ou, alternativement, vous pouvez utiliser Package Swift Gestionnaire place.

    Assurez-vous que vous utilisez également la dernière version de tout autre SDK Firebase dont vous dépendez.

  2. Exécuter pod install et ouvrir le créé .xcworkspace fichier.

  3. Dans Xcode, ajouter la capacité App à votre application Attest.

  4. Dans votre projet de .entitlements fichier, définissez l'environnement App Certifier à la production .

3. Initialiser App Check

Vous devrez initialiser App Check avant d'utiliser tout autre SDK Firebase.

Tout d' abord, écrire une implémentation de AppCheckProviderFactory . Les spécificités de votre implémentation dépendront de votre cas d'utilisation.

Par exemple, si vous avez seulement les utilisateurs sur iOS 14 et plus tard, vous pouvez simplement créer toujours AppAttestProvider objets:

Rapide

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Objectif c

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

Ou bien , vous pouvez créer AppAttestProvider objets sur iOS 14 et plus tard, et revenir à DeviceCheckProvider sur les versions antérieures:

Rapide

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

Objectif c

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

Après avoir mis en place une AppCheckProviderFactory classe, configurer App Vérifier l'utiliser:

Rapide

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Objectif c

Note: Ce produit Firebase n'est pas disponible sur les cibles watchos.

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

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 fait à Firebase, mais les produits Firebase n'exigeront pas que les jetons soient valides jusqu'à ce que vous activiez l'application dans la section App Check de la console Firebase. Voir les deux sections suivantes pour plus de détails.

5. Surveiller les métriques de demande

Maintenant que votre application mise à jour est entre les mains des utilisateurs, vous pouvez activer l'application de la vérification des applications 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 paramètres de demande de vérification App pour un produit, ouvrez le Paramètres du projet> App Vérifiez la section de la console Firebase. Par exemple:

Capture d'écran de la page des métriques App Check

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

  • Demandes vérifiées sont celles qui ont une application valide Vérifier jeton. Après avoir activé l'application App Check, seules les demandes de cette catégorie aboutiront.

  • Les demandes des clients sont ceux qui obsolètes manquent un jeton de vérification App. Ces demandes peuvent provenir d'une ancienne version du SDK Firebase avant qu'App Check ne soit inclus dans l'application.

  • Demandes d'origine inconnue sont ceux qui manquent une application Vérifiez jeton et ne regardent pas comme ils viennent du SDK Firebase. Il peut s'agir de demandes effectuées avec des clés API volées ou de demandes falsifiées effectuées sans le SDK Firebase.

  • Demandes non valides sont celles qui ont une application non valide Vérifiez jeton, ce qui pourrait provenir d' un client inauthentique essayant d'usurper l' identité de votre application, ou des 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 principales.

  • 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 annulera 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 paramètres dans la console Google Cloud en créant un logs-basé compteur métrique avec le filtre métrique suivante:

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

Étiquette de jsonPayload.verifications.appCheck la métrique en utilisant le champ jsonPayload.verifications.appCheck .

6. 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 concernant ce produit seront rejetées.

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

Pour activer l'application de Realtime Database, Cloud Firestore (iOS et Android) et Cloud Storage :

  1. Ouvrez le Paramètres du projet> App Vérifiez la section 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 que cela peut prendre jusqu'à 10 minutes après l'activation de l'application pour qu'elle prenne effet.

Fonctions Cloud

Voir Activer App Vérifier l' application des fonctions de Cloud .

Prochaines étapes

Si, après avoir enregistré votre application pour App Check, vous souhaitez exécuter votre application dans un environnement qu'App Check ne classerait normalement pas comme valide, tel qu'un simulateur pendant le développement, ou à partir d'un environnement d'intégration continue (CI), vous pouvez créez une version de débogage de votre application qui utilise le fournisseur de débogage App Check au lieu d'un véritable fournisseur d'attestation.

Voir Utilisation App Vérifiez avec le fournisseur de débogage sur les plates - formes d' Apple .