Selecione a plataforma: Android iOS JavaScript

Usar o App Check para proteger sua chave de API

O Firebase App Check protege as chamadas do seu app para a Plataforma Google Maps bloqueando o tráfego que vem de fontes diferentes de apps legítimos. Isso é feito verificando um token de um provedor de atestado, como o App Attest. A integração dos seus apps com o App Check ajuda a proteger contra solicitações maliciosas, para que você não receba cobranças por chamadas de API não autorizadas.

O App Check é adequado para mim?

O App Check é recomendado na maioria dos casos, mas não é necessário ou não tem suporte nas seguintes situações:

  • Você está usando o SDK Places original. O App Check só é compatível com o SDK do Places (novo).
  • Apps particulares ou experimentais. Se o app não estiver acessível publicamente, o App Check não será necessário.
  • Se o app for usado apenas entre servidores, o App Check não será necessário. No entanto, se o servidor que se comunica com a GMP for usado por clientes públicos (como apps para dispositivos móveis), considere usar o App Check para proteger esse servidor em vez da GMP.
  • Os provedores de atestado recomendados pelo App Check não funcionam em dispositivos considerados comprometidos ou não confiáveis pelo seu provedor de atestado. Se você precisar oferecer suporte a esses dispositivos, implante um serviço de atestado personalizado. Para mais informações, consulte as instruções.

Visão geral das etapas de implementação

Em um nível alto, estas são as etapas que você vai seguir para integrar seu app ao App Check:

  1. Adicione o Firebase ao aplicativo.
  2. Adicione e inicialize a biblioteca do App Check.
  3. Adicione o provedor de token ao seu app.
  4. Inicialize as APIs Places e App Check.
  5. Ative a depuração.
  6. Monitore as solicitações do app e decida sobre a aplicação.

Depois de integrar com o App Check, você poderá conferir as métricas de tráfego do back-end no console do Firebase. Essas métricas fornecem um detalhamento das solicitações de acordo com a presença de um token válido do App Check. Consulte a documentação do Firebase App Check para mais informações.

Quando você tiver certeza de que a maioria das solicitações é de fontes legítimas e que os usuários atualizaram para a versão mais recente do app, que inclui sua implementação do App Check, ative a aplicação obrigatória. Quando a aplicação é ativada, o App Check rejeita todo o tráfego sem um token válido.

Considerações ao planejar uma integração do App Check

Confira algumas coisas a considerar ao planejar sua integração:

  • Os provedores de atestado que recomendamos, Device Check ou App Attest, estão sujeitos a cotas e limitações definidas pela Apple.

    Você pode usar um provedor de atestado personalizado, mas esse é um caso de uso avançado. Consulte a documentação do Firebase App Check para mais informações.

  • Os usuários do seu app vão ter alguma latência na inicialização. No entanto, depois disso, qualquer reatestado periódico vai ocorrer em segundo plano, e os usuários não vão mais sentir latência. A quantidade exata de latência na inicialização depende do provedor de comprovação escolhido.

    O período em que o token do App Check é válido (o tempo de vida, ou TTL) determina a frequência das reconfirmações. Essa duração pode ser configurada no console do Firebase. A reatestação ocorre quando aproximadamente metade do TTL decorreu. Para mais informações, consulte a documentação do Firebase do seu provedor de atestado.

Integrar seu app ao App Check

Pré-requisitos e requisitos

  • Um app com o SDK Places versão 9.2 ou mais recente instalado.
  • O ID do pacote do app.
  • O ID da equipe no Apple Member Center, em "Membership".
  • Se você planeja usar o Device Check, seu arquivo de chave privada e o ID da chave.
  • Você precisa ser o proprietário do app no Cloud Console.
  • Você vai precisar do ID do projeto do app no console do Cloud.

Etapa 1: adicionar o Firebase ao app

Siga as instruções na documentação para desenvolvedores do Firebase e adicione o Firebase ao seu app.

Ao registrar o app, você vai receber um arquivo de configuração, GoogleService-Info.plist. Adicione esse arquivo, sem modificações, ao nível raiz do seu app.

SDK do Places Swift para iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

Etapa 2: adicionar a biblioteca do App Check e inicializar o App Check

O Firebase oferece instruções para cada provedor de atestado padrão. Estas instruções mostram como configurar um projeto do Firebase e adicionar a biblioteca do App Check ao seu app. Siga os exemplos de código fornecidos para inicializar o App Check.

  1. Siga as instruções do Firebase para adicionar a biblioteca do App Check:
  2. Inicialize o App Check.
    • Se você estiver usando o App Attest, siga a documentação para desenvolvedores do Firebase sobre o App Attest.

      Siga as instruções do Firebase App Check para criar uma implementação de AppCheckProviderFactory e adicione-a ao arquivo AppDelegate.

      SDK do Places Swift para iOS

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

      Swift

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

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Se você estiver usando o Device Check, adicione o seguinte ao seu AppDelegate:

      SDK do Places Swift para iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Etapa 3: adicionar o provedor de token

Crie um arquivo chamado AppCheckTokenProvider (ou, se você estiver usando Objective-C, dois arquivos chamados AppCheckTokenProvider.h e AppCheckTokenProvider.m) no nível raiz do app. Adicione as seguintes instruções de importação e definição de classe:

SDK do Places Swift para iOS

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlacesSwift
      
struct TokenProvider: AppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}
      

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

Etapa 4: inicializar as APIs Places e App Check

  1. No arquivo AppDelegate, inicialize a API Places:

    SDK do Places Swift para iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Em seguida, inicialize a API App Check:

    SDK do Places Swift para iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

Etapa 5: ativar a depuração (opcional)

Se você quiser desenvolver e testar seu app localmente ou executá-lo em um ambiente de integração contínua (CI), crie um build de depuração do app que use um segredo de depuração para receber tokens válidos do App Check. Isso permite evitar o uso de provedores de declaração reais no build de depuração.

Para testar o app no simulador ou em um dispositivo de teste:

  • Crie e defina a fábrica do provedor de depuração do App Check.

    Este exemplo de código processa os cenários de depuração e produção:

    SDK do Places Swift para iOS

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • Ative a geração de registros no seu projeto do Xcode, inicie o app e encontre o token de depuração local no registro.
  • Adicione esse token ao console do Firebase.
  • Para mais informações e instruções, consulte a documentação do App Check.

Para executar o app em um ambiente de CI:

  • Crie um token de depuração no console do Firebase e adicione-o ao keystore seguro do seu sistema de CI.
  • No Xcode, adicione uma variável de ambiente ao esquema de teste com o nome FIRAAppCheckDebugToken e $(APP_CHECK_DEBUG_TOKEN) (ou algo semelhante) como o valor.
  • No script de teste de CI, transmita o token de depuração como um ambiente
  • Crie e defina a fábrica do provedor de depuração do App Check.

    Este exemplo de código processa os cenários de depuração e produção:

    SDK do Places Swift para iOS

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Swift

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Objective-C

    #if DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[FIRAppCheckDebugProviderFactory alloc] init];
    #else  // DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
    #endif  // DEBUG
    AppCheck.setAppCheckProviderFactory(providerFactory)
  • Para mais informações e instruções, consulte a documentação do App Check.

Etapa 6: monitorar as solicitações de apps e decidir sobre a aplicação

Antes de começar a aplicação, verifique se você não vai interromper usuários legítimos do app. Para isso, acesse a tela de métricas do App Check e confira qual porcentagem do tráfego do app é verificada, desatualizada ou ilegítima. Depois de verificar que a maior parte do seu tráfego está verificada, você pode ativar a aplicação.

Consulte a documentação do Firebase App Check para mais informações e instruções.