Come usare l'integrazione getToken - AWS WAF, AWS Firewall Manager e AWS Shield Advanced

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come usare l'integrazione getToken

Questa sezione spiega come utilizzare l'getTokenoperazione.

AWS WAF richiede che le richieste agli endpoint protetti includano il cookie denominato aws-waf-token con il valore del token corrente.

L'getTokenoperazione è una chiamata asincrona API che recupera il AWS WAF token e lo memorizza in un cookie nella pagina corrente con il nome aws-waf-token e il valore impostato sul valore del token. Puoi utilizzare questo cookie token se necessario nella tua pagina.

Quando chiamigetToken, esegue le seguenti operazioni:

  • Se un token non scaduto è già disponibile, la chiamata lo restituisce immediatamente.

  • In caso contrario, la chiamata recupera un nuovo token dal fornitore del token e attende il completamento del flusso di lavoro di acquisizione del token fino a 2 secondi prima che scada il timeout. Se l'operazione scade, viene generato un errore, che deve essere gestito dal codice di chiamata.

L'getTokenoperazione è accompagnata da un'hasTokenoperazione che indica se il aws-waf-token cookie contiene attualmente un token non scaduto.

AwsWafIntegration.getToken()recupera un token valido e lo memorizza come cookie. La maggior parte delle chiamate client allega automaticamente questo cookie, ma alcune no. Ad esempio, le chiamate effettuate tra domini host non allegano il cookie. Nei dettagli di implementazione che seguono, mostriamo come lavorare con entrambi i tipi di chiamate client.

getTokenImplementazione di base, per le chiamate che allegano il aws-waf-token cookie

L'elenco di esempio seguente mostra il codice standard per l'implementazione dell'getTokenoperazione con una richiesta di accesso.

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 }
Invia il modulo solo dopo che il token è disponibile da getToken

L'elenco seguente mostra come registrare un listener di eventi per intercettare gli invii di moduli fino a quando non sarà disponibile un token valido per l'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>
Allegare il token quando il client non allega il cookie per impostazione predefinita aws-waf-token

AwsWafIntegration.getToken()recupera un token valido e lo memorizza come cookie, ma non tutte le chiamate client associano questo cookie per impostazione predefinita. Ad esempio, le chiamate effettuate tra domini host non allegano il cookie.

Il fetch wrapper gestisce questi casi automaticamente, ma se non riesci a utilizzare il fetch wrapper, puoi gestirlo utilizzando un'intestazione personalizzata. x-aws-waf-token AWS WAF legge i token da questa intestazione, oltre a leggerli dal cookie. aws-waf-token Il codice seguente mostra un esempio di impostazione dell'intestazione.

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

Per impostazione predefinita, AWS WAF accetta solo token che contengono lo stesso dominio del dominio host richiesto. Qualsiasi token interdominio richiede le voci corrispondenti nell'elenco dei domini dei ACL token Web. Per ulteriori informazioni, consulta AWS WAF configurazione dell'elenco di domini con ACL token web.

Per ulteriori informazioni sull'uso dei token tra domini, consulta aws-samples/ -. aws-waf-bot-control api-protection-with-captcha