了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Commencez à utiliser App Check avec un fournisseur personnalisé sur les plateformes Apple,Commencez à utiliser App Check avec un fournisseur personnalisé sur les plateformes Apple

Cette page vous montre comment activer App Check dans une application Apple, à l'aide de votre fournisseur App Check personnalisé . Lorsque vous activez App Check, vous vous assurez que seule votre application peut accéder aux ressources Firebase de votre projet.

Si vous souhaitez utiliser App Check avec les fournisseurs intégrés, consultez les documents pour App Check avec App Attest et App Check avec DeviceCheck .

Avant que tu commences

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

  1. Ajoutez la dépendance pour App Check au Podfile de votre projet :

    pod 'FirebaseAppCheck'

    Ou, alternativement, vous pouvez utiliser Swift Package Manager à la place.

    Assurez-vous également que vous utilisez la dernière version de toutes les bibliothèques clientes du service Firebase dont vous dépendez.

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

2. Implémenter les protocoles App Check

Tout d'abord, vous devez créer des classes qui implémentent les protocoles AppCheckProvider et AppCheckProviderFactory .

Votre classe AppCheckProvider doit avoir une méthode getToken(completion:) , qui collecte toutes les informations requises par votre fournisseur App Check personnalisé comme preuve d'authenticité, et les envoie à votre service d'acquisition de jetons en échange d'un jeton App Check. Le SDK App Check gère la mise en cache des jetons, donc obtenez toujours un nouveau jeton dans votre implémentation de getToken(completion:) .

Rapide

class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
    var app: FirebaseApp

    init(withFirebaseApp app: FirebaseApp) {
        self.app = app
        super.init()
    }

    func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) {
        DispatchQueue.main.async {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Create AppCheckToken object.
            let exp = Date(timeIntervalSince1970: expirationFromServer)
            let token = AppCheckToken(
                token: tokenFromServer,
                expirationDate: exp
            )

            // Pass the token or error to the completion handler.
            handler(token, nil)
        }
    }
}

Objectif c

@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>

@property FIRApp *app;

- (id)initWithApp:(FIRApp *)app;

@end

@implementation YourCustomAppCheckProvider

- (id)initWithApp:app {
    self = [super init];
    if (self) {
        self.app = app;
    }
    return self;
}

- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
                                                 NSError * _Nullable))handler {
    dispatch_async(dispatch_get_main_queue(), ^{
        // Logic to exchange proof of authenticity for an App Check token.
        // ...

        // Create FIRAppCheckToken object.
        NSTimeInterval exp = expirationFromServer;
        FIRAppCheckToken *token
            = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
                                       expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];

        // Pass the token or error to the completion handler.
        handler(token, nil);
    });
}

@end

Implémentez également une classe AppCheckProviderFactory qui crée des instances de votre implémentation AppCheckProvider :

Rapide

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Objectif c

@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourCustomAppCheckProviderFactory

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

@end

3. Initialiser App Check

Ajoutez le code d'initialisation suivant à votre délégué d'application ou à l'initialiseur d'application :

Rapide

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

FirebaseApp.configure()

Objectif c

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

[FIRApp configure];

Prochaines étapes

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.

Surveiller les métriques et activer l'application

Avant d'activer l'application, cependant, vous devez vous assurer que cela ne perturbera pas vos utilisateurs légitimes existants. D'autre part, si vous constatez une utilisation suspecte des ressources de votre application, vous souhaiterez peut-être activer l'application plus tôt.

Pour vous aider à prendre cette décision, vous pouvez consulter les statistiques d'App Check pour les services que vous utilisez :

Activer l'application de la vérification des applications

Lorsque vous comprenez comment App Check affectera vos utilisateurs et que vous êtes prêt à continuer, vous pouvez activer l'application d'App Check :

Utiliser App Check dans les environnements de débogage

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.

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