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'getToken
operazione.
AWS WAF richiede che le richieste agli endpoint protetti includano il cookie denominato aws-waf-token
con il valore del token corrente.
L'getToken
operazione è 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'getToken
operazione è accompagnata da un'hasToken
operazione 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.
getToken
Implementazione 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'getToken
operazione 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.