Premiers pas avec App Check avec App Attest sur les plates-formes Apple

Cette page explique 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. Consultez la présentation de cette fonctionnalité.

App Check utilise App Attest pour vérifier que les requêtes envoyées aux services Firebase proviennent bien de votre application authentique. App Check n'utilise actuellement pas App Attest pour analyser le risque de fraude.

Si vous souhaitez utiliser App Check avec votre propre fournisseur personnalisé, consultez la section Implémenter un fournisseur App Check personnalisé.

1. Configurer votre projet Firebase

  1. Vous aurez besoin de Xcode 12.5 ou version ultérieure pour utiliser App Attest.

  2. Ajoutez Firebase à votre projet Apple si ce n'est pas déjà fait.

  3. Enregistrez vos applications pour qu'elles utilisent App Check avec le fournisseur App Attest dans la section App Check de la console Firebase.

    En règle générale, vous devez enregistrer toutes les applications de votre projet, car une fois l'application forcée 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 de l'application, définissez une valeur TTL (Time To Live) personnalisée pour les jetons App Check émis par le fournisseur. Vous pouvez définir la valeur TTL sur une valeur comprise entre 30 minutes et 7 jours. Lorsque vous modifiez cette valeur, tenez compte des compromis suivants:

    • Sécurité : les valeurs TTL plus courtes offrent une sécurité renforcée, car elles réduisent la période pendant laquelle un jeton divulgué ou intercepté peut être utilisé de manière abusive par un pirate informatique.
    • Performances: des TTL plus courtes signifient que votre application effectue l'attestation plus fréquemment. Étant donné que le processus d'attestation des applications ajoute de la latence aux requêtes réseau à chaque exécution, une valeur TTL courte peut affecter les performances de votre application.
    • Quota et coût : les TTL plus courts et les réattestations fréquentes réduisent plus rapidement votre quota. Pour les services payants, cela peut entraîner des coûts plus élevés. Consultez la section Quotas et limites.

    La valeur 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 de TTL.

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

  1. Ajoutez la dépendance de App Check à l'Podfile de votre projet :

    pod 'FirebaseAppCheck'

    Vous pouvez également utiliser Swift Package Manager à la place.

    Assurez-vous également d'utiliser la dernière version de tous les autres SDK Firebase sur lesquels vous dépendez.

  2. Exécutez pod install et ouvrez le fichier .xcworkspace créé.

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

  4. Dans le fichier .entitlements de votre projet, définissez l'environnement App Attest sur production.

3. Initialiser App Check

Vous devez initialiser App Check avant d'utiliser d'autres SDK Firebase.

Commencez par écrire une implémentation de AppCheckProviderFactory. Les détails de votre implémentation dépendront de votre cas d'utilisation.

Par exemple, si vous n'avez des utilisateurs que sur iOS 14 ou version ultérieure, vous pouvez simplement créer toujours des objets AppAttestProvider:

Swift

Remarque : 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)
  }
}

Objective-C

Remarque: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

Vous pouvez également créer des objets AppAttestProvider sur iOS 14 ou version ultérieure, et revenir à DeviceCheckProvider sur les versions antérieures:

Swift

Remarque : 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)
    }
  }
}

Objective-C

Remarque : 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 implémenté une classe AppCheckProviderFactory, configurez App Check pour l'utiliser:

Swift

Remarque : Ce produit Firebase n'est pas disponible sur les cibles watchOS.

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

FirebaseApp.configure()

Objective-C

Remarque : Ce produit Firebase n'est pas disponible sur les cibles watchOS.

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

[FIRApp configure];

Étapes suivantes

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 requête envoyée à 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.

Surveiller les métriques et activer l'application

Toutefois, avant d'activer l'application, vous devez vous assurer que cela ne perturbera pas vos utilisateurs légitimes existants. D'un autre côté, si vous constatez une utilisation suspecte des ressources de votre application, vous pouvez activer les mesures d'application dès que possible.

Pour vous aider à prendre cette décision, vous pouvez consulter les métriques App Check des services que vous utilisez :

Activer l'application des règles App Check

Lorsque vous comprenez l'impact de App Check sur vos utilisateurs et que vous êtes prêt à continuer, vous pouvez activer l'application de App Check:

Utiliser App Check dans les environnements de débogage

Si, après avoir enregistré votre application pour App Check, vous souhaitez l'exécuter dans un environnement que 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éer un build de débogage de votre application qui utilise le fournisseur de débogage App Check au lieu d'un véritable fournisseur d'attestation.

Consultez Utiliser App Check avec le fournisseur de débogage sur les plates-formes Apple.