

**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 usar a integração `getToken`
<a name="waf-js-challenge-api-get-token"></a>

Esta seção explica como usar a operação `getToken`.

AWS WAF exige que suas solicitações para endpoints protegidos incluam o cookie nomeado `aws-waf-token` com o valor do seu token atual. 

A operação `getToken` é uma chamada de API assíncrona que recupera o token do AWS WAF e o armazena em um cookie na página atual com o nome `aws-waf-token` e o valor definido como o valor do token. Você pode usar esse cookie de token conforme necessário em sua página. 

Quando você chama `getToken`, ele faz o seguinte: 
+ Se um token não expirado já estiver disponível, a chamada o retornará imediatamente.
+ Caso contrário, a chamada recuperará um novo token do provedor do token, aguardando até 2 segundos para que o fluxo de trabalho de aquisição do token seja concluído antes do tempo limite. Se a operação atingir o tempo limite, ela gerará um erro, que seu código de chamada deve processar. 

A operação `getToken` tem uma operação `hasToken` complementar, que indica se o cookie `aws-waf-token` atualmente contém um token não expirado. 

`AwsWafIntegration.getToken()` recupera um token válido e o armazena como um cookie. A maioria das chamadas de clientes anexa automaticamente esse cookie, mas algumas não. Por exemplo, chamadas feitas em domínios de host não anexam o cookie. Nos detalhes de implementação a seguir, mostramos como trabalhar com os dois tipos de chamadas de clientes. 

**Implementação básica de `getToken`, para chamadas que anexam o cookie `aws-waf-token`**  
A lista de exemplo a seguir mostra o código padrão para implementar a operação `getToken` com uma solicitação de login.

```
const login_response = await AwsWafIntegration.getToken()
	    .catch(e => {
	        // Implement error handling logic for your use case
	    })
	    // The getToken call returns the token, and doesn't typically require special handling
	    .then(token => {
	        return loginToMyPage()
	    })
	
	async function loginToMyPage() {
	    // Your existing login code
	}
```

**Envie o formulário somente após o token estar disponível em `getToken`**  
A lista a seguir mostra como registrar um receptor de eventos para interceptar envios de formulários até que um token válido esteja disponível para uso. 

```
<body>
	  <h1>Login</h1>
	  <p></p>
	  <form id="login-form" action="/web/login" method="POST" enctype="application/x-www-form-urlencoded">
	    <label for="input_username">USERNAME</label>
	    <input type="text" name="input_username" id="input_username"><br>
	    <label for="input_password">PASSWORD</label>
	    <input type="password" name="input_password" id="input_password"><br>
	    <button type="submit">Submit<button>
	  </form>
	
	<script>
	  const form = document.querySelector("#login-form");
	
	  // Register an event listener to intercept form submissions
	  form.addEventListener("submit", (e) => {
	      // Submit the form only after a token is available 
	      if (!AwsWafIntegration.hasToken()) {
	          e.preventDefault();
	          AwsWafIntegration.getToken().then(() => {
	              e.target.submit();
	          }, (reason) => { console.log("Error:"+reason) });
	        }
	    });
	</script>
	</body>
```

**Como anexar o token quando seu cliente não anexa o cookie `aws-waf-token` por padrão**  
`AwsWafIntegration.getToken()` recupera um token válido e o armazena como um cookie, mas nem todas as chamadas de clientes anexam esse cookie por padrão. Por exemplo, chamadas feitas em domínios de host não anexam o cookie. 

O `fetch` wrapper trata esses casos automaticamente, mas se você não conseguir usar o `fetch` wrapper, poderá lidar com isso usando um cabeçalho personalizado`x-aws-waf-token`. AWS WAF lê os tokens desse cabeçalho, além de lê-los do `aws-waf-token` cookie. O código a seguir mostra um exemplo de configuração do cabeçalho. 

```
const token = await AwsWafIntegration.getToken();
const result = await fetch('/url', {
    headers: {
        'x-aws-waf-token': token,
    },
});
```

Por padrão, AWS WAF só aceita tokens que contenham o mesmo domínio do domínio host solicitado. Todos os tokens entre domínios exigem entradas correspondentes no pacote de proteção (ACL da Web) da lista de domínios do token. Para obter mais informações, consulte [AWS WAF configuração da lista de domínios de token do pacote de proteção (web ACL)](waf-tokens-domains.md#waf-tokens-domain-lists). 

Para obter informações adicionais sobre o uso de tokens entre domínios, consulte [aws-waf-bot-controlaws-samples/](https://github.com/aws-samples/aws-waf-bot-control-api-protection-with-captcha) -. api-protection-with-captcha