

**Apresentando uma nova experiência de console para AWS WAF**

Agora você pode usar a experiência atualizada para acessar a AWS WAF funcionalidade em qualquer lugar do console. Para obter mais detalhes, consulte [Trabalhando com o console](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como o SDK AWS WAF móvel funciona
<a name="waf-mobile-sdk-how-it-works"></a>

Esta seção explica como as classes, propriedades e operações do SDK AWS WAF móvel funcionam juntas.

O celular SDKs fornece um provedor de token configurável que você pode usar para recuperação e uso de tokens. O provedor do token verifica se as solicitações que você permite são de clientes legítimos. Ao enviar solicitações para os AWS recursos com os quais você protege AWS WAF, você inclui o token em um cookie para validar a solicitação. Você pode manipular o cookie do token manualmente ou fazer com que o provedor do token faça isso por você.

Esta seção aborda as interações entre as classes, propriedades e métodos incluídos no SDK móvel. Para obter a especificação do SDK, consulte [AWS WAF especificação de SDK móvel](waf-mobile-sdk-specification.md). 

## Recuperação e armazenamento em cache de tokens
<a name="waf-mobile-sdk-how-token-basics"></a>

Ao criar a instância do provedor de token em seu aplicativo móvel, você configura como deseja que ela gerencie os tokens e a recuperação de tokens. Sua principal opção é como manter tokens válidos e não expirados para uso nas solicitações da web do seu aplicativo:
+ **Atualização em segundo plano ativada**: esse é o padrão. O provedor de token atualiza automaticamente o token em segundo plano e o armazena em cache. Com a atualização em segundo plano ativada, quando você chama `getToken()`, a operação recupera o token em cache. 

  O provedor de token executa a atualização do token em intervalos configuráveis, para que um token não expirado esteja sempre disponível no cache enquanto o aplicativo estiver ativo. A atualização em segundo plano é pausada enquanto seu aplicativo está em um estado inativo. Para obter mais informações sobre isso, consulte [Recuperação de um token após a inatividade do aplicativo](#waf-mobile-sdk-how-back-from-inactive).
+ **Atualização em segundo plano desativada**: você pode desativar a atualização de tokens em segundo plano e, em seguida, recuperar tokens somente sob demanda. Os tokens recuperados sob demanda não são armazenados em cache e você pode recuperar mais de um, se quiser. Cada token é independente de qualquer outro que você recupere e cada um tem seu próprio timestamp que é usado para calcular a expiração.

  Você tem as seguintes opções para recuperação de token quando a atualização em segundo plano está desativada: 
  + **`getToken()`**— Quando você liga `getToken()` com a atualização em segundo plano desativada, a chamada recupera de forma síncrona um novo token de. AWS WAF Essa é uma chamada potencialmente bloqueadora que pode afetar a capacidade de resposta da aplicação se você a invocar no thread principal. 
  + **`onTokenReady(WAFTokenResultCallback)`**: essa chamada recupera de forma assíncrona um novo token e, em seguida, invoca o retorno de chamada do resultado fornecido em um thread em segundo plano quando um token está pronto. 

### Como o provedor de token tenta novamente recuperações de tokens com falha
<a name="waf-mobile-sdk-how-token-retrieval-retries"></a>

O provedor de token repete automaticamente a recuperação do token quando a recuperação falha. As novas tentativas são executadas inicialmente usando o recuo exponencial com um tempo de espera inicial de 100 ms. Para obter mais repetições de tentaivas exponenciais, consulte [Novas tentativas e recuo exponencial na AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html).

Quando o número de novas tentativas atinge o `maxRetryCount` configurado, o provedor do token para de tentar ou passa a tentar a cada `maxErrorTokenRefreshDelayMsec` milissegundos, dependendo do tipo de recuperação do token: 
+ **`onTokenReady()`**: o provedor do token passa a esperar `maxErrorTokenRefreshDelayMsec` milissegundos entre as tentativas e continua tentando recuperar o token. 
+ **Atualização em segundo plano**: o provedor de token passa a esperar `maxErrorTokenRefreshDelayMsec` milissegundos entre as tentativas e continua tentando recuperar o token. 
+ **Chamadas `getToken()` sob demanda, quando a atualização em segundo plano está desativada**: o provedor de token para de tentar recuperar um token e retorna o valor do token anterior ou um valor nulo se não houver nenhum token anterior. 

## Cenários de nova tentativa de recuperação de tokens
<a name="waf-mobile-sdk-how-token-retrieval-retry-scenarios"></a>

Quando o provedor do tokens tenta recuperar um token, isso pode resultar em novas tentativas automáticas, dependendo de onde a recuperação do token falha no fluxo de aquisição do token. Esta seção lista os possíveis locais em que você pode ver uma nova tentativa automática.
+ **Obtendo ou verificando o AWS WAF Desafio por meio de /inputs ou /verify:**
  + Quando uma solicitação para obter e verificar uma AWS WAF contestação é feita e falha, isso pode resultar em uma nova tentativa automática.
  + Você pode observar novas tentativas automáticas acontecendo aqui junto com um erro de `socketTimeoutException`. Isso pode ter várias causas, incluindo:
    + Baixa largura de banda da rede: confirme as configurações de conectividade de rede
    + URL de integração de aplicativos modificada: confirme se a URL de integração não foi modificada em relação ao que aparece no console AWS WAF 
  + A contagem de repetições automáticas é configurável com a função `maxRetryCount()`.
+ **Atualizar o tokens:**
  + Quando uma solicitação para atualizar o token é feita por meio do manipulador de tokens, isso pode resultar em uma nova tentativa automática.
  + A contagem de repetições automáticas aqui é configurável com a função `maxRetryCount()`.

Uma configuração sem novas tentativas automáticas é possível por meio da definição de `maxRetryCount(0)`.

## Tempo de imunidade do token e atualização em plano de fundo
<a name="waf-mobile-sdk-how-token-immunity"></a>

O tempo de imunidade do token que você configura na Web ACL é independente do intervalo de atualização do token definido no SDK AWS WAF móvel. Quando você ativa a atualização em segundo plano, o SDK atualiza o token no intervalo que você especifica usando `tokenRefreshDelaySec()`. Isso pode resultar na existência simultânea de vários tokens válidos, dependendo do tempo de imunidade configurado.

Para evitar vários tokens válidos, desabilite a atualização em segundo plano e use a função `getToken()` para gerenciar o ciclo de vida do token em sua aplicação móvel.

## Recuperação de um token após a inatividade do aplicativo
<a name="waf-mobile-sdk-how-back-from-inactive"></a>

A atualização em segundo plano só é realizada enquanto seu aplicativo é considerado ativo para seu tipo de aplicativo: 
+ **iOS**: a atualização em segundo plano é realizada quando o aplicativo está em primeiro plano.
+ **Android**: a atualização em segundo plano é realizada quando o aplicativo não está fechado, seja em primeiro plano ou em segundo plano.

Se seu aplicativo permanecer em qualquer estado que não ofereça suporte à atualização em segundo plano por mais tempo do que os `tokenRefreshDelaySec` segundos configurados, o provedor de token pausará a atualização em segundo plano. Por exemplo, para um aplicativo iOS, se `tokenRefreshDelaySec` for 300 e o aplicativo fechar ou ficar em segundo plano por mais de 300 segundos, o provedor do token interromperá a atualização do token. Quando o aplicativo retorna ao estado ativo, o provedor de token reinicia automaticamente a atualização em segundo plano. 

Quando seu aplicativo voltar ao estado ativo, chame `onTokenReady()` para que você possa ser notificado quando o provedor do token tiver recuperado e armazenado em cache um novo token. Não chame `getToken()`, porque o cache pode ainda não conter um token válido e atual. 

## A URL de integração da aplicação
<a name="waf-mobile-sdk-application-integration-url"></a>

O URL de integração de aplicativos do SDK AWS WAF móvel aponta para uma Web ACL que você habilitou para integração de aplicativos. Essa URL encaminha as solicitações para o servidor de backend correto e as associa ao seu cliente. Ela não serve como um controle de segurança rígido, portanto, expor uma URL de integração não representa um risco de segurança.

Você pode modificar tecnicamente a URL de integração fornecida e ainda obter um token. No entanto, não recomendamos isso porque você pode perder a visibilidade das taxas de resolução de desafios ou encontrar falhas na recuperação de tokens com erros `socketTimeoutException`.

## Dependências
<a name="waf-mobile-sdk-dependencies"></a>

Cada SDK AWS WAF móvel disponível para download inclui um arquivo README que lista as dependências de sua versão específica do SDK. Consulte o README para ver as dependências da sua versão do SDK móvel.

## Ofuscação/ ProGuard (somente SDK para Android)
<a name="waf-mobile-sdk-obfuscation"></a>

Se você usa um produto de ofuscação ou minificação ProGuard, como o, talvez seja necessário excluir determinados namespaces para garantir que o SDK móvel funcione corretamente. Verifique o README da sua versão do SDK móvel para encontrar a lista de namespaces e regras de exclusão.