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.
Ejemplos de código para AWS WAF móvil SDK
En esta sección se proporcionan ejemplos de código para usar el móvilSDK.
Inicialización del proveedor de tokens y obtención de tokens
La instancia del proveedor de tokens se inicia mediante un objeto de configuración. A continuación, puede recuperar los tokens mediante las operaciones disponibles. Se indican a continuación los componentes básicos del código exigido.
- iOS
-
let url: URL = URL(string: "Web ACL integration URL
")!
let configuration = WAFConfiguration(applicationIntegrationUrl: url, domainName: "Domain name
")
let tokenProvider = WAFTokenProvider(configuration)
//onTokenReady can be add as an observer for UIApplication.willEnterForegroundNotification
self.tokenProvider.onTokenReady() { token, error in
if let token = token {
//token available
}
if let error = error {
//error occurred after exhausting all retries
}
}
//getToken()
let token = tokenProvider.getToken()
- Android
-
Ejemplo de Java:
String applicationIntegrationURL = "Web ACL integration URL
";
//Or
URL applicationIntegrationURL = new URL("Web ACL integration URL
");
String domainName = "Domain name
";
WAFConfiguration configuration = WAFConfiguration.builder().applicationIntegrationURL(applicationIntegrationURL).domainName(domainName).build();
WAFTokenProvider tokenProvider = new WAFTokenProvider(Application context
, configuration);
// implement a token result callback
WAFTokenResultCallback callback = (wafToken, error) -> {
if (wafToken != null) {
// token available
} else {
// error occurred in token refresh
}
};
// Add this callback to application creation or activity creation where token will be used
tokenProvider.onTokenReady(callback);
// Once you have token in token result callback
// if background refresh is enabled you can call getToken() from same tokenprovider object
// if background refresh is disabled you can directly call getToken()(blocking call) for new token
WAFToken token = tokenProvider.getToken();
Ejemplo de Kotlin:
import com.amazonaws.waf.mobilesdk.token.WAFConfiguration
import com.amazonaws.waf.mobilesdk.token.WAFTokenProvider
private lateinit var wafConfiguration: WAFConfiguration
private lateinit var wafTokenProvider: WAFTokenProvider
private val WAF_INTEGRATION_URL = "Web ACL integration URL
"
private val WAF_DOMAIN_NAME = "Domain name
"
fun initWaf() {
// Initialize the tokenprovider instance
val applicationIntegrationURL = URL(WAF_INTEGRATION_URL)
wafConfiguration =
WAFConfiguration.builder().applicationIntegrationURL(applicationIntegrationURL)
.domainName(WAF_DOMAIN_NAME).backgroundRefreshEnabled(true).build()
wafTokenProvider = WAFTokenProvider(getApplication(), wafConfiguration)
// getToken from tokenprovider object
println("WAF: "+ wafTokenProvider.token.value)
// implement callback for where token will be used
wafTokenProvider.onTokenReady {
wafToken, sdkError ->
run {
println("WAF Token:" + wafToken.value)
}
}
}
Permitir SDK que proporcione la cookie simbólica en sus HTTP solicitudes
Si setTokenCookie
es TRUE
, el proveedor de tokens incluye la cookie de token para usted en sus solicitudes web en todas las ubicaciones de la ruta especificada en tokenCookiePath
. De forma predeterminada, setTokenCookie
es TRUE
y tokenCookiePath
es /
.
Puede limitar el alcance de las solicitudes que incluyen una cookie de token especificando la ruta de la cookie de token, por ejemplo, /web/login
. Si lo hace, compruebe que su AWS WAF las reglas no inspeccionan los tokens en las solicitudes que envías a otras rutas. Cuando usa el grupo de reglas de AWSManagedRulesACFPRuleSet
, configura las rutas de registro y creación de cuentas, y el grupo de reglas comprueba si hay tokens en las solicitudes que se envían a esas rutas. Para obtener más información, consulte Añadir el grupo de reglas ACFP gestionado a la web ACL. Igualmente, al usar el grupo de reglas de AWSManagedRulesATPRuleSet
, configure la ruta de inicio de sesión, y el grupo de reglas comprueba si hay tokens en las solicitudes que se envían a esa ruta. Para obtener más información, consulte Añadir el grupo de reglas ATP gestionado a la web ACL.
- iOS
-
Cuando setTokenCookie
es asíTRUE
, el proveedor del token almacena el AWS WAF el token en un HTTPCookieStorage.shared
e incluye automáticamente la cookie en las solicitudes al dominio que especificóWAFConfiguration
.
let request = URLRequest(url: URL(string: domainEndpointUrl)!)
//The token cookie is set automatically as cookie header
let task = URLSession.shared.dataTask(with: request) { data, urlResponse, error in
}.resume()
- Android
-
Cuando setTokenCookie
es asíTRUE
, el proveedor del token almacena el AWS WAF token en una CookieHandler
instancia que se comparte en toda la aplicación. Cuando el proveedor de tokens incluye automáticamente la cookie en las solicitudes al dominio que especificó en WAFConfiguration
.
Ejemplo de Java:
URL url = new URL("Domain name
");
//The token cookie is set automatically as cookie header
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.getResponseCode();
Ejemplo de Kotlin:
val url = URL("Domain name
")
//The token cookie is set automatically as cookie header
val connection = (url.openConnection() as HttpsURLConnection)
connection.responseCode
Si ya tiene inicializada la instancia predeterminada CookieHandler
, el proveedor de tokens la usará para administrar las cookies. De lo contrario, el proveedor del token inicializará una nueva CookieManager
instancia con AWS WAF token CookiePolicy.ACCEPT_ORIGINAL_SERVER
y, a continuación, establecerá esta nueva instancia como la instancia predeterminada enCookieHandler
.
El siguiente código muestra cómo SDK inicializa el administrador de cookies y el controlador de cookies cuando no están disponibles en tu aplicación.
Ejemplo de Java:
CookieManager cookieManager = (CookieManager) CookieHandler.getDefault();
if (cookieManager == null) {
// Cookie manager is initialized with CookiePolicy.ACCEPT_ORIGINAL_SERVER
cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
}
Ejemplo de Kotlin:
var cookieManager = CookieHandler.getDefault() as? CookieManager
if (cookieManager == null) {
// Cookie manager is initialized with CookiePolicy.ACCEPT_ORIGINAL_SERVER
cookieManager = CookieManager()
CookieHandler.setDefault(cookieManager)
}
Proporcionar manualmente la cookie simbólica en sus HTTP solicitudes
Si lo has configurado setTokenCookie
FALSE
, tendrás que proporcionar la cookie de token manualmente, como encabezado de HTTP solicitud de cookies, en las solicitudes que envíes a tu punto final protegido. El siguiente código muestra cómo hacerlo.
- iOS
-
var request = URLRequest(url: wafProtectedEndpoint)
request.setValue("aws-waf-token=token from token provider
", forHTTPHeaderField: "Cookie")
request.httpShouldHandleCookies = true
URLSession.shared.dataTask(with: request) { data, response, error in }
- Android
-
Ejemplo de Java:
URL url = new URL("Domain name
");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
String wafTokenCookie = "aws-waf-token=token from token provider
";
connection.setRequestProperty("Cookie", wafTokenCookie);
connection.getInputStream();
Ejemplo de Kotlin:
val url = URL("Domain name
")
val connection = (url.openConnection() as HttpsURLConnection)
val wafTokenCookie = "aws-waf-token=token from token provider"
connection.setRequestProperty("Cookie", wafTokenCookie)
connection.inputStream