Wie benutzt man die Integration getToken - AWS WAFAWS Firewall Manager, und AWS Shield Advanced

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wie benutzt man die Integration getToken

AWS WAF erfordert, dass Ihre Anfragen an geschützte Endpunkte das Cookie enthalten, das aws-waf-token mit dem Wert Ihres aktuellen Tokens benannt ist.

Bei der getToken Operation handelt es sich um einen asynchronen API-Aufruf, der das AWS WAF Token abruft und es in einem Cookie auf der aktuellen Seite speichertaws-waf-token, wobei der Name und der Wert auf den Tokenwert gesetzt sind. Sie können dieses Token-Cookie nach Bedarf auf Ihrer Seite verwenden.

Wenn Sie getToken aufrufen, geschieht Folgendes:

  • Wenn ein nicht abgelaufenes Token bereits verfügbar ist, gibt der Aufruf es sofort zurück.

  • Andernfalls wird ein neues Token aus dem -Token-Anbieter aufgerufen. Wird der Workflow für den Token-Erwerb nicht innerhalb von 2 Sekunden abgeschlossen, tritt eine Zeitüberschreitung ein. Wenn die Zeitüberschreitung eingetreten ist, wird ein Fehler ausgelöst, der von Ihrem Aufrufcode behoben werden muss.

Der getToken-Betrieb verfügt über den begleitenden hasToken-Betrieb, der angibt, ob das aws-waf-token-Cookie derzeit ein nicht abgelaufenes Token enthält.

AwsWafIntegration.getToken()ruft ein gültiges Token ab und speichert es als Cookie. Bei den meisten Client-Aufrufen wird dieses Cookie automatisch angehängt, bei einigen jedoch nicht. Bei Aufrufen über Host-Domains hinweg wird das Cookie beispielsweise nicht angehängt. In den folgenden Implementierungsdetails zeigen wir, wie Sie mit beiden Arten von Client-Aufrufen arbeiten können.

Grundlegende getToken Implementierung für Aufrufe, die das aws-waf-token Cookie anhängen

Die folgende Beispielliste zeigt Standardcode für die Implementierung des getToken Vorgangs mit einer Anmeldeanforderung.

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 }
Senden Sie das Formular erst ab, wenn das Token unter getToken verfügbar ist.

Die folgende Auflistung zeigt, wie Sie einen Ereignis-Listener registrieren, um Formularübermittlungen abzufangen, bis ein gültiges Token zur Verwendung verfügbar ist.

<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>
Anhängen des Tokens, wenn Ihr Client das aws-waf-token Cookie nicht standardmäßig anhängt

AwsWafIntegration.getToken()ruft ein gültiges Token ab und speichert es als Cookie, aber nicht alle Client-Aufrufe hängen dieses Cookie standardmäßig an. Beispielsweise hängen Aufrufe über Hostdomänen hinweg das Cookie nicht an.

Der fetch Wrapper behandelt diese Fälle automatisch, aber wenn Sie den fetch Wrapper nicht verwenden können, können Sie dies mithilfe eines benutzerdefinierten x-aws-waf-token Headers handhaben. AWS WAF liest Token aus diesem Header und liest sie zusätzlich aus dem aws-waf-token Cookie. Der folgende Code zeigt ein Beispiel für das Setzen des Headers.

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

Akzeptiert standardmäßig AWS WAF nur Token, die dieselbe Domain wie die angeforderte Host-Domain enthalten. Für alle domänenübergreifenden Token sind entsprechende Einträge in der Domainliste der Web-ACL-Tokens erforderlich. Weitere Informationen finden Sie unter AWS WAF Konfiguration der Domainliste für Web-ACL-Tokens.

Weitere Informationen zur domänenübergreifenden Verwendung von Token finden Sie unter aws-waf-bot-controlaws-samples/ -. api-protection-with-captcha