Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Proteja recursos não Firebase com App Check no iOS

Você pode proteger os recursos não Firebase do seu aplicativo, como back-ends auto-hospedados, com App Check. Para fazer isso, você precisará fazer o seguinte:

  • Modifique seu cliente de aplicativo para enviar um token de verificação de aplicativo junto com cada solicitação para seu back-end, conforme descrito nesta página.
  • Modificar seu backend para exigir uma App válido Verifique token com cada solicitação, como descrito em Verifique App Verifique os tokens de um backend personalizado .

Antes de você começar

Adicionar App Verifique para seu aplicativo, usando o App Attest , DeviceCheck , ou um provedor personalizado .

Enviar tokens de verificação de aplicativo com solicitações de back-end

Para garantir que seus pedidos de back-end incluem um válido, não expirado, App Verifique forma, envolva cada pedido em uma chamada para AppCheck.token() . A biblioteca App Check atualizará o token, se necessário, e você pode acessar o token no bloco de conclusão do método.

Assim que tiver um token válido, envie-o junto com a solicitação para seu back-end. Os detalhes de como você conseguir isso são até você, mas não enviar App Verifique fichas como parte de URLs, incluindo parâmetros de consulta, pois isso os torna vulneráveis a vazamentos acidentais e intercepção. O exemplo a seguir envia o token em um cabeçalho HTTP personalizado, que é a abordagem recomendada.

Rápido

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()
}

Objective-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];
}];