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

Protégez les ressources non Firebase avec App Check sur les plateformes Apple

Vous pouvez protéger les ressources non Firebase de votre application, telles que les backends auto-hébergés, avec App Check. Pour ce faire, vous devrez effectuer les deux opérations suivantes :

  • Modifiez votre client d'application pour envoyer un jeton App Check avec chaque demande à votre backend, comme décrit sur cette page.
  • Modifier votre back - end pour exiger une application valide Vérifiez jeton à chaque requête, comme décrit dans Vérifier App Vérifiez jetons à partir d' un back - end personnalisé .

Avant que tu commences

Ajouter App Vérifiez votre application, en utilisant App Certifier , DeviceCheck , ou un fournisseur personnalisé .

Envoyer des jetons App Check avec des requêtes backend

Pour vous assurer que vos demandes de back - end incluent valide, restant à courir, App Vérifiez jeton, enveloppez chaque demande dans un appel à AppCheck.token() . La bibliothèque App Check actualisera le jeton si nécessaire et vous pourrez accéder au jeton dans le bloc d'achèvement de la méthode.

Une fois que vous avez un jeton valide, envoyez-le avec la demande à votre backend. Les détails de la façon dont vous accomplissez ce sont à vous, mais ne pas envoyer App Vérifiez les jetons dans le cadre d'URL, y compris dans les paramètres de la requête, car cela les rend vulnérables aux fuites et l' interception accidentelle. L'exemple suivant envoie le jeton dans un en-tête HTTP personnalisé, ce qui est l'approche recommandée.

Rapide

AppCheck.appCheck().token(forcingRefresh: false) { token, error in
    guard error == nil else {
        // Handle any errors if the token was not retrieved.
        print("Unable to retrieve App Check token: \(error!)")
        return
    }
    guard let token = token else {
        print("Unable to retrieve App Check token.")
        return
    }

    // Get the raw App Check token string.
    let tokenString = token.token

    // Include the App Check token with requests to your server.
    let url = URL(string: "https://yourbackend.example.com/yourApiEndpoint")!
    var request = URLRequest(url: url)
    request.httpMethod = "GET"
    request.setValue(tokenString, forHTTPHeaderField: "X-Firebase-AppCheck")

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        // Handle response from your backend.
    }
    task.resume()
}

Objectif c

[[FIRAppCheck appCheck] tokenForcingRefresh:NO
                                 completion:^(FIRAppCheckToken * _Nullable token,
                                              NSError * _Nullable error) {
    if (error != nil) {
        // Handle any errors if the token was not retrieved.
        NSLog(@"Unable to retrieve App Check token: %@", error);
        return;
    }
    if (token == nil) {
        NSLog(@"Unable to retrieve App Check token.");
        return;
    }

    // Get the raw App Check token string.
    NSString *tokenString = token.token;

    // Include the App Check token with requests to your server.
    NSURL *url = [[NSURL alloc] initWithString:@"https://yourbackend.example.com/yourApiEndpoint"];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    [request setHTTPMethod:@"GET"];
    [request setValue:tokenString forHTTPHeaderField:@"X-Firebase-AppCheck"];

    NSURLSessionDataTask *task =
        [[NSURLSession sharedSession] dataTaskWithRequest:request
                                        completionHandler:^(NSData * _Nullable data,
                                                            NSURLResponse * _Nullable response,
                                                            NSError * _Nullable error) {
        // Handle response from your backend.
    }];
    [task resume];
}];