Neste documento, mostramos como integrar os recursos de WAF do reCAPTCHA com o Google Cloud Armor em aplicativos móveis.
Para concluir a integração, implemente um ou mais recursos do reCAPTCHA para WAF e configure as políticas de segurança do Google Cloud Armor. No entanto, é possível implementar apenas tokens de ação do reCAPTCHA para integração com o Google Cloud Armor em aplicativos para dispositivos móveis.
Antes de começar
Ative a API reCAPTCHA Enterprise.
Identifique as ações que você quer proteger.
Implementar tokens de ação reCAPTCHA
Para gerar tokens de ação, é preciso ter o reCAPTCHA em execução no aplicativo para dispositivos móveis.
Depois que o reCAPTCHA gera um token de ação, você o anexa a um cabeçalho de solicitação predefinido sempre que precisar proteger qualquer ação do usuário, como checkout
. Por padrão, os tokens de ação são válidos por 30 minutos, mas podem variar dependendo do tráfego.
É necessário anexar o token de ação a um cabeçalho de solicitação predefinido antes que ele expire. Assim, o Google Cloud Armor poderá avaliar os atributos do token.
Para implementar um token de ação reCAPTCHA, faça o seguinte:
Crie uma chave de token de ação para seu aplicativo para dispositivos móveis.
Console
No console Google Cloud , acesse a página reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos, na parte superior da página.
Se você não vir o nome do projeto, clique no seletor de recursos para selecioná-lo.
- Clique em Criar chave.
- No campo Nome de exibição, insira um nome de exibição para a chave.
- Dependendo do tipo de aplicativo para o qual você quer criar as chaves reCAPTCHA para WAF, execute a ação adequada:
- Em Tipo de aplicativo, selecione iOS.
- Na seção Lista de ID do pacote do iOS, clique em Adicionar ID do pacote do iOS.
No campo ID do pacote, insira o nome do ID do pacote do iOS.
- Opcional: para adicionar outro ID do pacote, clique em Adicionar ID do pacote do iOS e insira o nome dele no campo ID do pacote.
- Para proteger a chave do reCAPTCHA para seus IDs de pacote, verifique se a opção Desativar verificação do ID do pacote está desativada.
Opcional: forneça as configurações do desenvolvedor da Apple.
Recomendamos fornecer esses dados porque eles permitem que o reCAPTCHA ofereça pontuações de risco mais precisas para seu tráfego.
Digite as seguintes informações:
- Chave privada (.p8): gerada no Apple Centro para Desenvolvedores em "Certificates, Identifiers & Profiles".
- Identificador da chave: o identificador da chave de desenvolvedor da Apple (string de 10 caracteres).
- ID da equipe: o ID da equipe da Apple (string de 10 caracteres) proprietária do perfil de provisionamento usado para criar seu aplicativo.
- Opcional: clique em Próxima etapa (opcional).
- Para criar uma chave do reCAPTCHA para o WAF, faça o seguinte:
- Em Configurações adicionais, ative a opção
- Em Configurações adicionais, ative a opção Você vai implantar esta chave em um firewall de aplicativos da Web (WAF)?.
- Nas opções de Serviço, selecione Cloud Armor.
- Nas opções de Recurso, selecione Ação.
-
Para seu ambiente de não produção, se você quiser especificar uma pontuação que a chave retorne quando qualquer avaliação for criada para ela, faça o seguinte:
- Em Configurações adicionais, clique na chave Você está criando esta chave apenas para fins de teste?.
- Use o controle deslizante Definir pontuação para especificar uma pontuação entre 0 e 1,0.
- Clique em Criar chave.
- Em Tipo de aplicativo, selecione Android.
- Na seção Lista de pacote do Android, clique em Adicionar pacote do Android.
- No campo pacote do Android, insira o nome do pacote do Android.
- (Opcional) Para incluir outro pacote, clique em Adicionar pacote do Android e digite o nome de outro pacote no campo Pacote do Android.
- Para garantir que a chave do reCAPTCHA seja usada apenas no seu app, desative a opção Desativar verificação do nome do pacote.
- Se você quiser criar uma chave para um aplicativo disponível em outras app stores além da Google Play Store, ative a opção Suporte a aplicativos distribuídos fora da Google Play Store.
- Opcional: clique em Próxima etapa (opcional).
- Para criar uma chave do reCAPTCHA para o WAF, faça o seguinte:
- Em Configurações adicionais, ative a opção
- Em Configurações adicionais, ative a opção Você vai implantar esta chave em um firewall de aplicativos da Web (WAF)?.
- Nas opções de Serviço, selecione Cloud Armor.
- Nas opções de Recurso, selecione Ação.
-
Para seu ambiente de não produção, se você quiser especificar uma pontuação que a chave retorne quando qualquer avaliação for criada para ela, faça o seguinte:
- Em Configurações adicionais, clique na chave Você está criando esta chave apenas para fins de teste?.
- Use o controle deslizante Definir pontuação para especificar uma pontuação entre 0 e 1,0.
- Clique em Criar chave.
Criar chaves reCAPTCHA para WAF em aplicativos iOS
Recomendamos criar uma chave reCAPTCHA por aplicativo iOS.
A chave recém-criada é listada na página Chaves reCAPTCHA.
Criar chaves reCAPTCHA para WAF em aplicativos Android
A chave recém-criada é listada na página Chaves reCAPTCHA.
gcloud (iOS)
Para criar chaves do reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- BUNDLE_IDs: os IDs do pacote de apps iOS autorizados a usar a chave. Para especificar vários IDs de pacote, use um formato de lista separada por vírgulas.
- WAF_FEATURE: nome do recurso do WAF.
Especifique
action-token
. - WAF_SERVICE: nome do provedor de serviços
do WAF.
Especifique
CA
para o Google Cloud Armor.
Execute o comando gcloud recaptcha keys create:
Linux, macOS ou Cloud Shell
gcloud recaptcha keys create \ --display-name=DISPLAY_NAME \ --ios --bundle-ids=BUNDLE_IDs \ --waf-feature=WAF_FEATURE \ --waf-service=WAF_SERVICE
Windows (PowerShell)
gcloud recaptcha keys create ` --display-name=DISPLAY_NAME ` --ios --bundle-ids=BUNDLE_IDs ` --waf-feature=WAF_FEATURE ` --waf-service=WAF_SERVICE
Windows (cmd.exe)
gcloud recaptcha keys create ^ --display-name=DISPLAY_NAME ^ --ios --bundle-ids=BUNDLE_IDs ^ --waf-feature=WAF_FEATURE ^ --waf-service=WAF_SERVICE
A resposta contém a chave reCAPTCHA recém-criada.
gcloud (Android)
Para criar chaves do reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- PACKAGE_NAMES: nomes de pacotes de apps Android autorizados a usar a chave. Para especificar vários nomes de pacotes, use um formato de lista separada por vírgulas.
- WAF_FEATURE: nome do recurso do WAF.
Especifique
action-token
. - WAF_SERVICE: nome do provedor de serviços de WAF.
Especifique
CA
para o Google Cloud Armor.
Execute o comando gcloud recaptcha keys create:
Linux, macOS ou Cloud Shell
gcloud recaptcha keys create \ --display-name=DISPLAY_NAME \ --android --package-names=PACKAGE_NAMES \ --waf-feature=WAF_FEATURE \ --waf-service=WAF_SERVICE
Windows (PowerShell)
gcloud recaptcha keys create ` --display-name=DISPLAY_NAME ` --android --package-names=PACKAGE_NAMES ` --waf-feature=WAF_FEATURE ` --waf-service=WAF_SERVICE
Windows (cmd.exe)
gcloud recaptcha keys create ^ --display-name=DISPLAY_NAME ^ --android --package-names=PACKAGE_NAMES ^ --waf-feature=WAF_FEATURE ^ --waf-service=WAF_SERVICE
A resposta contém a chave reCAPTCHA recém-criada.
REST (iOS)
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, o nome de um app.
- BUNDLE_IDs: os IDs do pacote de apps iOS autorizados a usar a chave. Para especificar vários IDs de pacote, use um formato de lista separada por vírgulas.
- WAF_FEATURE: nome do recurso do WAF.
Especifique
action-token
. - WAF_SERVICE: nome do provedor de serviços de WAF.
Especifique
CA
para o Google Cloud Armor.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", "iosSettings": { "allowedBundleIds": "BUNDLE_IDS" }, 'wafSettings': " { "wafService": "CA", "wafFeature": "ACTION_TOKEN" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"PowerShell
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/6LfhtywnAAAAABY3sCS2duZ6A55kmDXz-PNEgKgT", "displayName": "DISPLAY_NAME", "iosSettings": { "allowAllBundleIds": false, "allowedBundleIds": [ BUNDLE_IDS ] }, "labels": {}, "wafSettings": { "wafService": "CA", "wafFeature": "ACTION_TOKEN" } }
REST (Android)
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, o nome de um app.
- PACKAGE_NAMES: nomes de pacotes de apps Android autorizados a usar a chave. Para especificar vários nomes de pacotes, use um formato de lista separada por vírgulas.
- WAF_FEATURE: nome do recurso do WAF.
Especifique
action-token
. - WAF_SERVICE: nome do provedor de serviços de WAF.
Especifique
CA
para o Google Cloud Armor.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", "androidSettings": { "allowedPackageNames":"PACKAGE_NAMES" }, 'wafSettings': " { "wafService": "CA", "wafFeature": "ACTION_TOKEN" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"PowerShell
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/6LcioSknAAAAABrjlMuZv2fjIGYMqwaAFC9izhoy", "displayName": "DISPLAY_NAME", "androidSettings": { "allowAllPackageNames": false, "allowedPackageNames": [ PACKAGE_NAMES ], "supportNonGoogleAppStoreDistribution": false }, "labels": {}, "wafSettings": { "wafService": "CA", "wafFeature": "ACTION_TOKEN" } }
Integre o SDK para dispositivos móveis do reCAPTCHA aos seus apps com a chave action-token que você criou. Para instruções, consulte o documento que corresponde ao tipo do seu aplicativo móvel.
- No Android, consulte Integrar chaves de WAF com aplicativos Android.
- No iOS, consulte Integrar chaves do WAF a aplicativos iOS.
Depois de receber o token do reCAPTCHA, anexe-o a um cabeçalho de solicitação predefinido no seguinte formato:
X-Recaptcha-Token: value-of-your-action-token
O exemplo de código a seguir mostra como anexar o token:
Android
Exemplo de código em Java
// This example shows how to send an HTTP request to the backend server // attached with the reCAPTCHA token in the header. // // @param serverUrl: the URL of the backend server. // @param rceToken: reCAPTCHA token that is attached to the header of the // HTTP request. public static void sendRequestToServerWithRceToken( String serverUrl, String rceToken) throws JSONException, IOException { URL url = new URL(String.format("http://%s/decryptcaptchacookie/accesswafserver", serverUrl)); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("X-Recaptcha-Token", rceToken); try { String requestBody = "['']"; sendRequest(connection, requestBody, "AccessWithRceToken", "GET"); } finally { connection.disconnect(); } } private static void sendRequest( HttpURLConnection connection, String requestString, String requestName, String action) throws IOException { connection.setConnectTimeout(HTTP_CONNECT_TIMEOUT_MS); connection.setReadTimeout(HTTP_READ_TIMEOUT_MS); connection.setRequestProperty("Content-type", CONTENT_TYPE); connection.setRequestProperty( "Content-Length", Integer.toString(Utf8.encodedLength(requestString))); connection.setRequestMethod(action); connection.setDoOutput(true); connection.connect(); try (OutputStream postStream = connection.getOutputStream()) { postStream.write(requestString.getBytes(UTF_8)); } int responseCode = connection.getResponseCode(); String response = connection.getResponseMessage(); if (responseCode != HttpURLConnection.HTTP_OK) { throw new IOException( String.format( "Failed to complete request.\nResponse code:%s\nError Detail:\n%s", responseCode, response)); } }
iOS
Exemplo de código em Swift
// This example shows how to send an HTTP request to the backend server // attached with the reCAPTCHA token in the header. // @param serverUrl: the URL of the backend server. // @param rceToken: reCAPTCHA token that is attached to the header of // the HTTP request. public static func accessWafServer(rceToken: String, serverUrl: String) async throws -> String { let requestURL = try HttpHelper.createRequestURL(endpoint: serverUrl) var request = try HttpHelper.createRequest(requestURL: requestURL, action: "GET") request.setValue(rceToken, forHTTPHeaderField: "X-Recaptcha-Token") let data = try await HttpHelper.getDataFromServer(request) return String(decoding: data, as: UTF8.self) }
Configurar políticas de segurança do Google Cloud Armor
Depois de implementar os recursos do reCAPTCHA para WAF, configure as políticas de segurança do Google Cloud Armor que avaliam os tokens do reCAPTCHA para gerenciamento de bots.
Para saber como configurar políticas de segurança do Google Cloud Armor e usar as chaves action-token com suas políticas de segurança, consulte Configurar regras para gerenciamento de bots.
Receber pontuações do reCAPTCHA
Para tokens de ação reCAPTCHA, é possível receber
pontuações do reCAPTCHA no cabeçalho X-Recaptcha-Wafdata
.
Com base nessas pontuações, é possível configurar qualquer ação personalizada que precise ser tomada
para solicitações de usuários.
O exemplo a seguir mostra um cabeçalho X-Recaptcha-Wafdata
de amostra:
X-Recaptcha-Wafdata: waf_service="Google Cloud Armor", action_token;score=0.9\r\n
Também é possível conferir as pontuações do reCAPTCHA nos registros do Google Cloud Armor.