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

Ativar verificação de aplicativo com App Attest em plataformas Apple

Esta página mostra como habilitar o App Check em um aplicativo da Apple, usando o provedor App Attest integrado. Ao habilitar o App Check, você ajuda a garantir que apenas seu aplicativo possa acessar os recursos do Firebase do seu projeto. Veja um Overview deste recurso.

App Verifique usos App Attest para verificar que as solicitações para serviços Firebase estão vindo de seu aplicativo autêntico. App Verifique atualmente não usar App atestar a análise de risco de fraude .

Se você quiser usar o App Verifique com seu próprio provedor personalizado, consulte Implementar um costume App check provedor .

1. Configure seu projeto Firebase

  1. Você precisará do Xcode 12.5+ para usar o App Attest.

  2. Adicionar Firebase ao seu projeto a Apple se você não tiver feito isso.

  3. Registrar seus aplicativos para usar o App Verifique com o provedor App Attest nas Configurações do projeto> App check seção do console Firebase.

    Normalmente, você precisa registrar todos os aplicativos do seu projeto, porque depois de habilitar a aplicação para um produto Firebase, apenas os aplicativos registrados poderão acessar os recursos de back-end do produto.

  4. Opcional: Nas configurações de registro de aplicativos, defina um costume time-to-live (TTL) para App check fichas emitidas pelo provedor. Você pode definir o TTL para qualquer valor entre 30 minutos e 7 dias. Ao alterar esse valor, esteja ciente das seguintes desvantagens:

    • Segurança: TTLs mais curtos fornecem segurança mais forte, pois reduzem a janela na qual um token vazado ou interceptado pode ser abusado por um invasor.
    • Desempenho: TTLs mais curtos significam que seu aplicativo executará o atestado com mais frequência. Como o processo de atestado do aplicativo adiciona latência às solicitações de rede sempre que é executado, um curto TTL pode afetar o desempenho do seu aplicativo.
    • Cota e custo: TTLs mais curtos e reafirmações frequentes esgotam sua cota mais rapidamente e, para serviços pagos, potencialmente custam mais. Veja Quotas e limites .

    O TTL padrão de 1 hora é razoável para a maioria dos aplicativos. Observe que a biblioteca App Check atualiza tokens em aproximadamente metade da duração TTL.

2. Adicione a biblioteca App Check ao seu aplicativo

  1. Adicionar a dependência para App Verifique para do seu projeto Podfile :

    pod 'Firebase/AppCheck'

    Ou, alternativamente, você pode usar Swift Package Manager vez.

    Certifique-se de usar a versão mais recente de qualquer outro Firebase SDKs de que dependa.

  2. Run pod install e abrir o criado .xcworkspace arquivo.

  3. No Xcode, adicionar a capacidade App atestar a sua aplicação.

  4. Na do seu projeto .entitlements arquivo, defina o ambiente App atestar a production .

3. Inicialize a verificação do aplicativo

Você precisará inicializar o App Check antes de usar qualquer outro SDK do Firebase.

Primeiro, escreva uma implementação de AppCheckProviderFactory . As especificações de sua implementação dependerão do seu caso de uso.

Por exemplo, se você só tem usuários no iOS 14 e, mais tarde, você pode simplesmente criar sempre AppAttestProvider objetos:

Rápido

Nota: Este produto Firebase não está disponível em alvos watchOS.

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

Objective-C

Nota: Este produto Firebase não está disponível em alvos watchOS.

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

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

@end

Ou, você pode criar AppAttestProvider objetos no iOS 14 e, mais tarde, e cair de volta para DeviceCheckProvider em versões anteriores:

Rápido

Nota: Este produto Firebase não está disponível em alvos 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

Nota: Este produto Firebase não está disponível em alvos 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 ter implementado um AppCheckProviderFactory classe, configure App Verifique para usá-lo:

Rápido

Nota: Este produto Firebase não está disponível em alvos watchOS.

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

FirebaseApp.configure()

Objective-C

Nota: Este produto Firebase não está disponível em alvos watchOS.

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

[FIRApp configure];

Depois que a biblioteca App Check estiver instalada em seu aplicativo, comece a distribuir o aplicativo atualizado para seus usuários.

O aplicativo cliente atualizado começará a enviar tokens de verificação de aplicativo junto com todas as solicitações feitas ao Firebase, mas os produtos Firebase não exigirão que os tokens sejam válidos até que você habilite a aplicação na seção Verificação de aplicativo do console do Firebase. Consulte as próximas duas seções para obter detalhes.

5. Monitore as métricas de solicitação

Agora que seu aplicativo atualizado está nas mãos dos usuários, você pode ativar a aplicação da Verificação de aplicativo para os produtos Firebase que você usa. Antes de fazer isso, no entanto, certifique-se de que isso não atrapalhe os usuários legítimos existentes.

Realtime Database, Cloud Firestore e Cloud Storage

Uma ferramenta importante que você pode usar para tomar essa decisão para o Realtime Database, Cloud Firestore e Cloud Storage é a tela de métricas de solicitação de verificação de aplicativo.

Para visualizar o aplicativo métricas check pedido de produto, abra o Configurações do projeto> App check seção do console Firebase. Por exemplo:

Captura de tela da página de métricas do App Check

As métricas de solicitação para cada produto são divididas em quatro categorias:

  • Pedidos verificados são aqueles que têm uma App válido Verifique token. Depois de habilitar a aplicação da Verificação de aplicativo, apenas as solicitações nesta categoria serão bem-sucedidas.

  • Pedidos de clientes desatualizados são aqueles que estão faltando uma verificação de token App. Essas solicitações podem ser de uma versão mais antiga do Firebase SDK antes de App Check ser incluído no aplicativo.

  • Solicitações de origem desconhecida são aqueles que estão faltando uma App Verifique forma, e não se parecem com eles vêm do Firebase SDK. Podem ser de solicitações feitas com chaves de API roubadas ou solicitações falsificadas feitas sem o SDK do Firebase.

  • Pedidos inválidos são aqueles que têm uma App inválido Verifique token, que pode ser de um cliente inauthentic tentando personificar a sua aplicação, ou de ambientes emulados.

A distribuição dessas categorias para seu aplicativo deve informar quando você decidir habilitar a aplicação. Aqui estão algumas diretrizes:

  • Se quase todas as solicitações recentes forem de clientes verificados, considere habilitar a aplicação para começar a proteger seus recursos de back-end.

  • Se uma parte significativa das solicitações recentes forem de clientes provavelmente desatualizados, para evitar interromper os usuários, considere esperar que mais usuários atualizem seu aplicativo antes de habilitar a aplicação. Aplicar a verificação de aplicativo em um aplicativo lançado interromperá as versões anteriores do aplicativo que não estão integradas ao SDK do App Check.

  • Se seu aplicativo ainda não foi iniciado, você deve habilitar a aplicação da Verificação de aplicativo imediatamente, uma vez que não há nenhum cliente desatualizado em uso.

Cloud Functions

Para Cloud Functions, você pode obter métricas de verificação de aplicativo examinando os registros de suas funções. Cada invocação de uma função que pode ser chamada emite uma entrada de registro estruturada como o exemplo a seguir:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Você pode analisar essas métricas no Google Cloud Console por criar um registos à base de contra-métrica com o filtro de métrica seguinte:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Rotular a métrica usando o campo jsonPayload.verifications.appCheck .

6. Habilite a aplicação

Para habilitar a aplicação, siga as instruções para cada produto, abaixo. Depois de habilitar a aplicação de um produto, todas as solicitações não verificadas para esse produto serão rejeitadas.

Realtime Database, Cloud Firestore e Cloud Storage

Para ativar a aplicação do Realtime Database, Cloud Firestore (iOS e Android) e Cloud Storage:

  1. Abra o check Configurações do projeto> App seção do console Firebase.

  2. Expanda a visualização das métricas do produto para o qual deseja ativar a aplicação.

  3. Clique em Aplicar e confirme a sua escolha.

Observe que pode levar até 10 minutos após a ativação da aplicação para que ela entre em vigor.

Cloud Functions

Veja Ativar App Verifique a aplicação das Funções de nuvem .

Próximos passos

Se, depois de registrar seu aplicativo para App Check, você deseja executar seu aplicativo em um ambiente que App Check normalmente não classificaria como válido, como um simulador durante o desenvolvimento, ou de um ambiente de integração contínua (CI), você pode crie uma compilação de depuração de seu aplicativo que usa o provedor de depuração App Check em vez de um provedor de atestado real.

Veja Uso App Verifique com o provedor de depuração em plataformas da Apple .