Usar o App Check para proteger sua chave de API
O Firebase App Check oferece proteção para chamadas do seu app para a Plataforma Google Maps, bloqueando o tráfego que vem de fontes diferentes de apps legítimos. Ele faz isso verificando um token de um provedor de atestado, como o reCAPTCHA Enterprise. A integração dos seus apps com o App Check ajuda a proteger contra solicitações maliciosas, para que você não seja cobrado 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 do Places original. O App Check só tem suporte para o SDK do Places (novo).
- Apps particulares ou experimentais. Se o app não for acessível publicamente, o App Check não será necessário.
- Se o app for usado apenas de servidor para servidor, 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.
Visão geral das etapas de implementação
Em alto nível, estas são as etapas que você vai seguir para integrar seu app ao App Check:
- Adicione o Firebase ao aplicativo.
- Adicione e inicialize a biblioteca do App Check.
- Adicione o provedor de token ao seu app.
- Inicialize as APIs Places e App Check.
- Ative a depuração.
- Monitore as solicitações do app e decida sobre a aplicação.
Depois de fazer a integração com o App Check, você poderá conferir as métricas de tráfego de back-end no console do Firebase. Essas métricas fornecem um detalhamento das solicitações por acompanhamento de um token válido do App Check. Consulte a documentação do Firebase App Check para mais informações.
Quando 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 seu app, que inclui a implementação do App Check, você poderá ativar a aplicação. Depois que a aplicação estiver ativada, o App Check vai rejeitar todo o tráfego sem um token válido do App Check.
Considerações ao planejar uma integração do App Check
Confira algumas coisas a considerar ao planejar sua integração:
- Um dos provedores de atestado recomendados, o reCAPTCHA Enterprise,cobra por mais de 10.000 avaliações por mês.
O outro provedor de atestado recomendado, reCAPTCHA v3, tem uma cota, após a qual o tráfego não será avaliado.
Você pode usar um provedor de atestado personalizado, embora esse seja um caso de uso avançado. Consulte a documentação do 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 ocorrerá em segundo plano, e os usuários não terão mais latência. A quantidade exata de latência na inicialização depende do provedor de atestado escolhido.
O período de validade do token do App Check (o tempo de vida ou TTL) determina a frequência dos reatestados. Essa duração pode ser configurada no console do Firebase. O reatestado ocorre quando aproximadamente metade do TTL já passou. Para mais informações, consulte os documentos do Firebase para seu provedor de atestado.
Integrar seu app ao App Check
Pré-requisitos e requisitos
- Um app com a a versão semanal ou trimestral mais recente das bibliotecas Maps JS API, Core e Places carregadas.
- Um projeto na nuvem com as APIs Maps JS e API Places (New) ativadas.
- Você precisa ser o proprietário do app no Cloud Console.
- Você vai precisar do ID do projeto do app no Cloud Console.
Etapa 1: adicionar o Firebase ao seu app
Siga as instruções na documentação do desenvolvedor do Firebase para adicionar o Firebase ao seu app.
Etapa 2: adicionar a biblioteca do App Check e inicializar o App Check
O Firebase fornece instruções para cada provedor de atestado padrão. Essas 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.
Etapa 3: carregar bibliotecas da API Maps JS
Carregue as bibliotecas Core, Maps e Places, conforme mostrado no snippet a seguir. Para mais informações e instruções, consulte a documentação da classe de lugar da API Maps JavaScript.
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); }
Etapa 4: inicializar as APIs Places e App Check
- Inicialize o App Check usando a configuração fornecida pelo console do Firebase.
- Verifique se as solicitações para a API Maps JS são acompanhadas por tokens do App Check:
async function init() { const {Settings} = await google.maps.importLibrary('core'); const {Map} = await google.maps.importLibrary('maps'); const {Place} = await google.maps.importLibrary('places'); const app = initializeApp({ // Your firebase configuration object }); // Pass your reCAPTCHA Enterprise site key to initializeAppCheck(). const appCheck = initializeAppCheck(app, { provider: new ReCaptchaEnterpriseProvider( 'abcdefghijklmnopqrstuvwxy-1234567890abcd', ), // Optional argument. If true, the SDK automatically refreshes App Check // tokens as needed. isTokenAutoRefreshEnabled: true, }); Settings.getInstance().fetchAppCheckToken = () => getToken(appCheck, /* forceRefresh = */ false); // Make a Places JS request const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'}); await place.fetchFields({fields: ['*']}); // Load a map map = new Map(document.getElementById("map"), { center: { lat: 37.4161493, lng: -122.0812166 }, zoom: 8, }); }
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 seu app que use um segredo de depuração para receber tokens válidos do App Check. Isso permite evitar o uso de provedores de atestado reais no build de depuração.
Para testar seu app localmente:
- Ative o provedor de depuração para fins de desenvolvimento.
- Você vai receber um UUID4 aleatório gerado automaticamente (chamado de _token de depuração_ na documentação do App Check) dos registros de depuração do SDK. Adicione esse token ao console do Firebase.
- Para mais informações e instruções, consulte a documentação do App Check.
Para executar seu app em um ambiente de CI:
- Gere um UUID4 aleatório no console do Firebase.
- Adicione o UUID4 como um token de depuração e copie-o para um armazenamento secreto que os testes de CI vão acessar por execução de teste.
- Para mais informações e instruções, consulte a documentação do App Check.
Etapa 6: monitorar as solicitações do app e decidir sobre a aplicação
Antes de iniciar a aplicação, verifique se você não vai interromper usuários legítimos do seu app. Para fazer isso, acesse a tela de métricas do App Check para conferir qual porcentagem do tráfego do seu app é verificada, desatualizada ou ilegítima. Quando você perceber que a maioria do tráfego é verificada, poderá ativar a aplicação.
Consulte a documentação do Firebase App Check para mais informações e instruções.