

**Presentamos una nueva experiencia de consola para AWS WAF**

Ahora puede usar la experiencia actualizada para acceder a las AWS WAF funciones desde cualquier parte de la consola. Para obtener más información, consulte [Trabajar con la consola](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómo utilizar la integración de `getToken`
<a name="waf-js-challenge-api-get-token"></a>

En esta sección, se explica cómo usar la operación `getToken`.

AWS WAF requiere que sus solicitudes a los puntos finales protegidos incluyan la cookie nombrada `aws-waf-token` con el valor de su token actual. 

La operación de `getToken` es una llamada a la API asíncrona que recupera el token de AWS WAF y lo almacena en una cookie en la página actual con el nombre `aws-waf-token`, y el valor establecido al valor del token. Puede usar esta cookie de token en su página según sea necesario. 

Cuando se llama a `getToken`, hace lo siguiente: 
+ Si un token vigente ya está disponible, la llamada lo devuelve inmediatamente.
+ De lo contrario, la llamada recupera un nuevo token del proveedor de tokens y espera hasta 2 segundos a que se complete el flujo de trabajo de adquisición del token antes de que se agote el tiempo de espera. Si se agota el tiempo de espera de la operación, se generará un error que deberá gestionar su código de llamada. 

La operación `getToken` viene acompañada de una operación `hasToken` que indica si la cookie `aws-waf-token` contiene actualmente un token que no ha caducado. 

`AwsWafIntegration.getToken()` recupera un token válido y lo almacena como una cookie. La mayoría de las llamadas de los clientes adjuntan automáticamente esta cookie, pero algunas no. Por ejemplo, las llamadas realizadas entre dominios host no adjuntan la cookie. En los detalles de implementación que aparecen a continuación, mostramos cómo trabajar con ambos tipos de llamadas de clientes. 

**Implementación `getToken` básica para llamadas que adjuntan la cookie `aws-waf-token`**  
La siguiente lista de ejemplos muestra el código estándar para implementar la operación `getToken` con una solicitud de inicio de sesión.

```
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
	}
```

**Envío del formulario solo después de que el token esté disponible en `getToken`**  
La siguiente lista muestra cómo registrar un oyente de eventos para interceptar los envíos de formularios hasta que haya un token válido disponible para su 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>
```

**Cómo adjuntar el token cuando el cliente no adjunta la cookie `aws-waf-token` de forma predeterminada**  
`AwsWafIntegration.getToken()` recupera un token válido y lo almacena como una cookie, pero no todas las llamadas de los clientes adjuntan esta cookie de forma predeterminada. Por ejemplo, las llamadas realizadas entre dominios host no adjuntan la cookie. 

El `fetch` contenedor maneja estos casos automáticamente, pero si no puedes usar el `fetch` contenedor, puedes hacerlo usando un encabezado personalizado. `x-aws-waf-token` AWS WAF lee los símbolos de este encabezado, además de leerlos de la `aws-waf-token` cookie. En el siguiente código, se muestra un ejemplo de cómo configurar el encabezado. 

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

De forma predeterminada, AWS WAF solo acepta los tokens que contienen el mismo dominio que el dominio anfitrión solicitado. Cualquier token que abarque varios dominios requiere las entradas correspondientes en la lista de dominios del token de paquete de protección (ACL web). Para obtener más información, consulte [AWS WAF configuración de la lista de dominios simbólicos del paquete de protección (ACL web)](waf-tokens-domains.md#waf-tokens-domain-lists). 

Para obtener información adicional sobre el uso de los tokens entre dominios, consulte [aws-waf-bot-controlaws-samples/](https://github.com/aws-samples/aws-waf-bot-control-api-protection-with-captcha) -. api-protection-with-captcha