Como usar a integração getToken - AWS WAF, AWS Firewall Manager, e AWS Shield Advanced

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

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.

getTokenImplementação básica, para chamadas que anexam o aws-waf-token cookie

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>
Anexar o token quando seu cliente não anexa o aws-waf-token cookie 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 personalizadox-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 na lista de domínios de tokens da ACL da web. Para ter mais informações, consulte AWS WAF configuração da lista de domínios do token Web ACL.

Para obter informações adicionais sobre o uso de tokens entre domínios, consulte aws-waf-bot-controlaws-samples/ -. api-protection-with-captcha