Introdução ao App Check com o App Attest em plataformas Apple

Esta página mostra como ativar App Check em um app da Apple usando o provedor integrado do App Attest. Ao ativar o App Check, você ajuda a garantir que apenas seu app possa acessar os recursos do Firebase do seu projeto. Consulte a Visão geral desse recurso.

O App Check usa o App Attest para verificar se as solicitações para os serviços do Firebase são provenientes do seu aplicativo autêntico. No momento, o App Check não usa o App Attest para analisar riscos de fraude.

Se você quiser usar App Check com seu próprio provedor personalizado, consulte Implementar um provedor App Check personalizado.

1. Configurar seu projeto do Firebase

  1. Você vai precisar do Xcode 12.5 ou uma versão mais recente para usar o App Attest.

  2. Adicione o Firebase ao seu projeto Apple, caso ainda não tenha feito isso.

  3. Registre seus apps para usar App Check com o provedor do App Attest na seção App Check do console Firebase.

    Geralmente, é necessário registrar todos os apps do projeto porque, depois de ativar a aplicação de um produto do Firebase, somente apps registrados poderão acessar os recursos de back-end do produto.

  4. Opcional: nas configurações de registro do aplicativo, defina um time to live (TTL) personalizado para os tokens do App Check emitidos pelo provedor. É possível definir o TTL como qualquer valor entre 30 minutos e 7 dias. Ao mudar esse valor, esteja ciente das seguintes compensações:

    • Segurança: os TTLs mais curtos oferecem maior segurança, porque reduzem a janela em que um token vazado ou interceptado pode ser usado por um invasor.
    • Desempenho: TTLs mais curtos significam que seu app realizará atestados com mais frequência. Como o processo de atestado do app adiciona latência às solicitações de rede sempre que é executado, um TTL curto pode afetar o desempenho do app.
    • Cota e custo: TTLs mais curtos e novos atestados frequentes esgotam sua cota mais rapidamente e, para serviços pagos, podem custar mais. Consulte Cotas e limites.

    O TTL padrão de uma hora é razoável para a maioria dos apps. A biblioteca App Check atualiza os tokens em aproximadamente metade da duração do TTL.

2. Adicionar a biblioteca App Check ao app

  1. Adicione a dependência de App Check ao Podfile do projeto:

    pod 'FirebaseAppCheck'

    Se preferir, use o Gerenciador de pacotes Swift.

    Verifique se você também está usando a versão mais recente de todos os outros SDKs do Firebase de que você depende.

  2. Execute pod install e abra o arquivo .xcworkspace criado.

  3. No Xcode, adicione o recurso App Attest ao app.

  4. No arquivo .entitlements do projeto, defina o ambiente do App Attest como production.

3. Inicializar o App Check

Será necessário inicializar o App Check antes de usar qualquer outro SDK do Firebase.

Primeiro, escreva uma implementação de AppCheckProviderFactory. As especificidades da implementação dependerão do caso de uso.

Por exemplo, se você tiver usuários apenas no iOS 14 e posterior, basta criar objetos AppAttestProvider:

Swift

Observação: este produto do Firebase não está disponível em destinos watchOS.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Objective-C

Observação: este produto do Firebase não está disponível em destinos watchOS.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

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

@end

Ou é possível criar objetos AppAttestProvider no iOS 14 e em versões mais recentes e retornar ao DeviceCheckProvider nas versões anteriores:

Swift

Observação: este produto do Firebase não está disponível em destinos 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

Observação: este produto do Firebase não está disponível em destinos 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

Depois de implementar uma classe AppCheckProviderFactory, configure App Check para usá-la:

Swift

Observação: este produto do Firebase não está disponível em destinos watchOS.

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

FirebaseApp.configure()

Objective-C

Observação: este produto do Firebase não está disponível em destinos watchOS.

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

[FIRApp configure];

Próximas etapas

Depois que a biblioteca App Check estiver instalada no seu app, comece a distribuir o app atualizado para os usuários.

O app cliente atualizado vai começar a enviar tokens do App Check em todas as solicitações feitas ao Firebase, mas os produtos dessa plataforma não exigirão que os tokens sejam válidos até que você ative a aplicação obrigatória na seção App Check do Console do Firebase.

Monitorar métricas e ativar a aplicação obrigatória

Antes de ativar a aplicação obrigatória, verifique se isso não vai afetar seus usuários legítimos. Por outro lado, se você perceber um uso suspeito dos recursos do seu app, convém ativar a aplicação obrigatória antes do previsto.

Para tomar essa decisão, analise as métricas do App Check nos serviços usados:

Ativar a aplicação App Check

Assim que você entender como o App Check vai afetar seus usuários e estiver tudo pronto para prosseguir, ative a aplicação obrigatória do App Check:

Usar App Check em ambientes de depuração

Se depois de registrar seu aplicativo no App Check você quiser executá-lo em um ambiente que o App Check normalmente não classificaria como válido, como um simulador durante o desenvolvimento ou em uma integração contínua (CI), crie um build de depuração do seu app que use o provedor de depuração do App Check em vez de um provedor de atestado real.

Consulte Usar App Check com o provedor de depuração em plataformas da Apple.